2017-11-15 18 views
0

私はElasticSearch 5.6を使用しています。私はJSONの文書に従っている。ElasticSearchネストされたboolクエリ

{ 
      "cards": [{ 
         "tag_categories": [ 
          { 
           "is_sensitive": true, 
           "category": "Users", 
           "tags": [ 
            { 
             "is_selected": true, 
             "name": "user1" 
            }, 
            { 
             "is_selected": true, 
             "name": "user2" 
            }, 
            { 
             "is_selected": false, 
             "name": "user3" 
            } 
           ] 
          } 
         ], 
         "risk": "medium", 
         "position": 1, 
         "placement": 4, 
         "title": "test title", 

        }, ...] 
     } 

与えられたすべてのユーザー名と対応するis_selected値がtrueの場合、この文書を返信します。

これは私の質問です。

ユーザー名とis_selected値の各セットに一致する2つの子boolクエリを追加しました。親boolクエリはANDを取得し、trueの場合はドキュメントを返します。

上記の例のクエリでは、user1とuser2が条件に一致するため、ドキュメントを返す必要があります。しかし、それは起こりません。

1人のユーザーとis_selected値を比較すると、ドキュメントが返されます。例:user1

私が間違いを犯した場所を誰かが見せてくれれば、私は感謝しています。

答えて

0

別々のネストされたブロックを追加しました。

{ 
    "_source": { 
    "excludes": ["cards.pages"] 
}, 
"query": { 
"bool": { 
    "must": [{ 
    "match": { 
     "_all": "hello world" 
    } 
    }], 
    "filter": [ 
    { 
     "nested": { 
     "path": "cards.tag_categories.tags", 
     "query": { 
      "bool": { 
      "must": [ 
       { 
        "term": { 
        "cards.tag_categories.tags.name.keyword": "user1" 
        } 
       }, 
       { 
        "term": { 
        "cards.tag_categories.tags.is_selected": true 
        } 
       } 

      ] 
      } 
     } 
     } 
    }, 
    { 
     "nested": { 
     "path": "cards.tag_categories.tags", 
     "query": { 
      "bool": { 
      "must": [ 
       { 
        "term": { 
        "cards.tag_categories.tags.name.keyword": "user2" 
        } 
       }, 
       { 
        "term": { 
        "cards.tag_categories.tags.is_selected": true 
        } 
       } 

      ] 
      } 
     } 
     } 
    }, 

    { 
     "term": { 
     "name.keyword": "hello name" 
     } 
    }, 
    { 
     "term": { 
     "title.keyword": "hello title" 
     } 
    } 

    ] 
} 

}}

関連する問題