elastic search and or condition
그림의 쿼리는 어느 index에 text가 샌프란시코과 머신 러닝이라는 텍스트를 포함하는 doc 을 찾는다.
그럼 ('샌프란시스코' 또는 '베이 지역') AND ('머신 러닝' 또는 '데이터 분석')과 일치하는 항목을 찾으려면 어떻게 해야 할까?
must 는 and 연산자이고 should 는 or 연산자이다.
따라서
{'match': {'text': 'san francisco'}}, {'match': {'text': 'bay area'}}
는 or 연산자로 묶여 있고 A or B 가 된다
{'match': {'text': 'machine learning'}}, {'match': {'text': 'data analysis'}}
는 역시 or 연산자로 묶여 있고 C or D 가 된다
그리고 이 것들이 must 즉 And 연산자로 묶여 있으므로
(A or B) and (C or D) 가 된다.
POST my_index/_bulk
{"index":{"_id":1}}
{"message":"tong power arms muscle", "name": "lee jungrae", "title": "coke is ten dollor!!", "sex": "male"}
{"index":{"_id":2}}
{"message":"The quick brown fox jumps over the lazy dog", "name": "park jinjoo", "title": "melon998", "sex": "male"}
{"index":{"_id":3}}
{"message":"The asian guy Knife", "name": "kim hejeong", "title": "school is nono", "sex": "male"}
{"index":{"_id":4}}
{"message":"cookie icecream", "name": "han taeseong", "title": "dogdogdog", "sex": "female"}
{"index":{"_id":5}}
{"message":"Good jumping man", "name": "cha yonghee", "title": "cute...??", "sex": "male"}
DELETE my_index
GET my_index/_search
GET my_index/_search
{
"query": {
"bool": {
"should": [
{
"bool" : {
"must" : [
{"match_phrase": {"message": "tong power"}}
]
}
},
{
"bool" : {
"must" : [
{"match_phrase": {"title": "melon998"}}
]
}
}
]
}
}
}
GET my_index/_search
{
"query": {
"bool": {
"filter": [
{
"match": {
"sex": "male"
}
},
{
"bool": {
"should": [
{
"bool" : {
"must" : [
{"match_phrase": {"message": "tong power"}}
]
}
},
{
"bool" : {
"must" : [
{"match_phrase": {"title": "melon998"}}
]
}
}
]
}
}
]
}
}
}
참조 : https://hdmetor.github.io/how-to-combine-queries-in-es/
Author And Source
이 문제에 관하여(elastic search and or condition), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@net1506/elastic-search-and-or-condition저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)