0

색인에서 여러 필드에 multi_match을 사용하고 싶습니다.ElasticSearch - AND/OR를 사용하는 멀티 일치

예를 들어,이 사용자 색인이 있습니다.

Users 
id 
real_name 
contact_name 
user_name 

이 필드는 모두 표준 분석기를 사용합니다. 그래서이 3 개의 필드 (real_name, contact_name, user_name)를 검색하고 적어도 하나의 필드에 "John"과 "Peter"가 모두있는 사용자를 찾고 싶습니다.

AND 부분이 필요하지 않으면 multi_match를 사용할 수 있음을 알고 있습니다. 예 :

{ 
    "multi_match" : { 
    "query": "john", 
    "fields": [ "real_name", "contact_name", "user_name" ] 
    } 
} 

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#query-dsl-multi-match-query

을하지만 추가 and 조건을하려면 내가 어떻게해야합니까 : 전용 존을 검색합니다. multi_match로이 작업을 수행 할 수 있습니까?

+0

이 추가 조건의 어떤 종류 싶어? 몇 가지 간단한 예를 보여 주시겠습니까? – Mysterion

답변

0

시도해보십시오. John은 real_name 또는 contact_name 또는 user_name에 있어야합니다.

{ 
"bool": { 
    "should": [ 
     { 
      "multi_match" : { 
      "query":  "john", 
      "type":  "cross_fields", 
      "fields":  [ "real_name", "contact_name", "user_name" ], 
      "minimum_should_match": "50%" 
      } 
     } 
    ] 
    } 
} 
+0

''minimum_should_match '': "50 %"'는 AND 절이 아닙니다. 대신에 "연산자": "AND"를 사용하십시오. minimun과 일치해야하는 것은 정의 된 필드에서 용어가 일치해야하는 방식을 정의하는 것입니다. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#operator-min – NicolasY

관련 문제