2017-12-15 9 views
-1

나는 다음과 같은 문서가 :contains-all-of, contains-one, contains-exactly 및 not-contains 연산을 포함하는 Elasticsearch 쿼리를 작성하는 방법은 무엇입니까?

{ 
'body': '', 
'date': '', 
} 

나는이 조건 문서를 얻으려면 :

  • 몸이 모두 포함 [ 'A', 'B', 'C'를]
  • [ 'D', 'E', 'F']
  • 과 정확히 이러한 문구가 포함 :
  • 및 중 하나가 포함 된 [ 'GH 전', 'JK (L')을]
  • 하지 포함 [ 'm'을 , 'n']

어떻게하면이 쿼리를 만들 수 있습니까?

+0

. 당신은 관대하게 제공되는 아래의 도움말을 살펴보고 당신의 유스 케이스에서 효과가 있는지 살펴 보겠습니까? 답변을 수락하거나 답장하는 것은 필수 사항은 아니지만, 작성한 도움말에 대해 질문 작성자가 답하지 않으면 커뮤니티가 없습니다. 감사! – halfer

답변

1

bool 쿼리를 사용해야합니다. "이 구문을 정확하게 포함하고 있음"에 대해 작동 원리는 본체 필드에 적용한 분석기에 따라 다릅니다. 예를 들어

https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-bool-query.html

:이 게시물에 대한 답변을받은 후 몇 가지 더 질문을했습니다

{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"match": {"body": "a"}}, 
     {"match": {"body": "b"}}, 
     {"match": {"body": "c"}}, 
     {"match_phrase": {"body": "g h i"}}, 
     {"match_phrase": {"body": "j k l"}} 
     ], 
     "should": [ 
     {"match": {"body": "d"}}, 
     {"match": {"body": "e"}}, 
     {"match": {"body": "f"}} 
     ], 
     "must_not": [ 
     {"match": {"body": "m"}}, 
     {"match": {"body": "n"}} 
     ] 
    } 
    } 
}