결과를 필터링해야하는 쿼리가 있습니다.
이것은 내 질문입니다
{
"query": {
"filtered": {
"query": {
"multi_match": {
"default_operator": "AND",
"fields": [
"author",
"title",
"publisher",
"year"
],
"query": "George Orwell"
}
},
"filter": {
"terms": {
"year": [
1980,
1981
]
}
}
}
}
}
라는 오류가 발생 no [query] registered for [filtered]
합니다. 필터링 된 필드에 대한 쿼리가 명확하게 있습니다. elasticsearch 페이지의 필터링 된 쿼리 문서에 제공된 형식을 따르고 있습니다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html
답변
filtered
쿼리는 사용되지 않으며 ES 5.0에서 제거되었습니다. 이제 bool/must/filter
대신 쿼리를 사용해야합니다 .
{
"query": {
"bool": {
"must": {
"multi_match": {
"operator": "and",
"fields": [
"author",
"title",
"publisher",
"year"
],
"query": "George Orwell"
}
},
"filter": {
"terms": {
"year": [
1980,
1981
]
}
}
}
}
}
다음은 두 쿼리의 차이점입니다.
3,4c3,4
< "bool": {
< "must": {
---
> "filtered": {
> "query": {
6c6
< "operator": "and",
---
> "default_operator": "AND",
추신 : 지금보고있는 참조 페이지는 부록의 “삭제 된 페이지”에 있으므로 더 이상 기본 문서의 일부가 아닙니다.