2015-01-08 3 views
5

나는 Elasticsearch를 내 Rails 앱에 추가하려고합니다. 나는 (그들은 단지 하나의 필드 인 것처럼)이 개 필드에 multi_match 쿼리를 수행 할 또한 오류가 1ElasticSearch with multi_match와 bool

response = Wine.search({ 
      query: { 
       multi_match: { 
      query: "test", 
      fields: ["winery", "name"] 
      }, 
     bool: { 
      must: { 
      term: { status: 1 } 
      }, 
      should: [], 
      minimum_should_match: 1 
     } 
     }  
     }) 

동일해야 다른 필드 (상태)에 필터를 가지고 :

"fields\":[\"winery\",\"name\"]},\"bool\":{\"must\":{\"term\":{\"status\":1}},\"should\":[],\"minimum_should_match\":1}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT \"bool\"]; }]","status":400} 

요청이 잘못 되었습니까? multi_match와 BOOL을 함께 수행하는 방법?

답변

13

사용하십시오 filtered query : Elasticsearch 5

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "multi_match": { 
        "query": "test", 
        "fields": [ 
         "winery", 
         "name" 
        ] 
       } 
      }, 
      "filter": { 
       "term": { 
        "status": "1" 
       } 
      } 
     } 
    } 
} 

같은 쿼리 :

{ 
    "query": { 
     "bool": { 
      "must": { 
       "multi_match": { 
        "query": "test", 
        "fields": [ 
         "winery", 
         "name" 
        ] 
       } 
      }, 
      "filter": { 
       "term": { 
        "status": "1" 
       } 
      } 
     } 
    } 
} 
+0

완벽한 해답! 감사 ! –

+0

불행히도 대답은 더 이상 ElasticSearch 5.x에서 유효하지 않으며, 업데이트 된 문서 페이지도별로 도움이되지 않습니다. multi_match 쿼리를 필터가있는 새로운 "bool"쿼리로 변환하는 방법을 알고 있습니까? – Overbryd

+1

Elasticserarch 5.x에서 사용할 수있는 쿼리로 대답을 업데이트했습니다. 자세한 내용은 bool query docs : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html#query-dsl-bool-query를 참조하십시오. –