[필터링 됨]에 등록 된 [쿼리] 없음


108

결과를 필터링해야하는 쿼리가 있습니다.

이것은 내 질문입니다

{
    "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

답변:


185

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",

추신 : 지금보고있는 참조 페이지는 부록의 "삭제 된 페이지"에 있으므로 더 이상 기본 문서의 일부가 아닙니다.


4
5.5를 사용할 때 default_operator가 multi_match 쿼리에서 제거 된 것 같으므로 위의 내용이 작동한다고 가정하고 잘못된 길을 안내했기 때문에이 답변을 업데이트 할 가치가있을 수 있습니다. 쿼리를 수정하여 내 필드와 일치하도록 수정했습니다. 작동하지 않았다! 기본 연산자 만 제거했지만 나중에 독자를 위해 편집 할 가치가있을 수도 있지만 간단한 수정 이었지만 오류는 다음과 같습니다. [multi_match] 쿼리가 [default_operator]를 지원하지 않습니다
Birdy

3
@Birdy 실제로 매개 변수의 이름이 지정 operator되지 않고 default_operator, 내 대답을 수정했습니다. 죄송합니다.
Val

Val-잠시만 기다리시면 logstash 문제에 대해 저를 도와 주시겠습니까? 저는 48 시간 넘게 테이블에서 머리를 내 밀었습니다 haha ​​그리고 당신이 하루를 구하는 데 도움이 될 수있는 분야의 전문가라는 것을 알고 있습니다. haha, 감사합니다. 당신이 할 수 있다면 나는 영원히 빚을 질 것입니다! stackoverflow.com/questions/45577572/…
Birdy

감사합니다. ES5.1 인스턴스를 7.1로 업그레이드 할 때 도움이되었습니다.
jhob101
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.