다음 쿼리와 같이 중첩 AND/OR 쿼리 문자열을 얻으려면 다른 부울 쿼리 내에서 여러 must/should가있는 부울 쿼리를 중첩합니다.elasticsearch의 다른 부울 쿼리 내에서 중첩 된 부울 쿼리 수행
{
"query": {
"bool": {
"should": [
**// SHOULD BLOCK 1**
{
<should_query_1>
},
**// SHOULD BLOCK 2**
{
<should_query_2>
},
**// SHOULD BLOCK 3**
{
"bool": {
"must": [
<should_level_2_MUST_query_1>,
<should_level_2_MUST_query_2>,
{
"bool": {
"must": [
<should_level_3_MUST_query_1>,
<should_level_3_MUST_query_2>,
]
}
}
]
}
},
**// SHOULD BLOCK 4**
{
"bool": {
"must": [
<should_MUST_query_1>,
<should_MUST_query_2>
]
}
}
]
}
},
"size": 25,
"from": 0,
"fields": []
}
예상되는 동작 내가 블록 1,2,3,4 'OR 연산을하고, 내가 할 수있는 "Should_level_2_MUST_queries를"원하는 "3을 차단해야"내'해야 논리적을 요구해 원이다.
그러나 실제로 나는 3 & 4 '첫 번째 수준에 AND 연산하는 블록은 블록 자체와 OR 연산 1 & 2. 나이 (가)를 달성하기 위해이 쿼리를 다시 작성/나를 다시 정렬 도와주세요해야 구문을 사용하고 있습니다 예상되는 행동. 사전
오늘 감사합니다. – Baaju