2017-06-29 13 views
0

現在、弾性検索5に切り替わった後に、フィルタの複数のフィールドに異なるクエリを作成しようとしていますが、動作していないようです。これは私がクエリがあるべきだと思う考えるものである。この場合、ElasticSearch - 複数の句を含むフィルタリングされたクエリES 5

 query: { 
      bool: { 
       must: [{ match: { name: 'athing' }}], 
       filter: [ 
        { bool: { 
         must: [ 
          { term: { ownerId: 123} }, 
          { term: { itemId: 3453} }, 
         ] 
        }}, 
        { bool: { 
         minimum_should_match: 1, 
         must: [ 
          { term: { groupId: 123565} }, 
          { term: { groupId: 5555} }, 
         ] 
        }} 
       ] 
      } 
     } 

、結果は非分析したアイテムIDとグループIDと一致する必要があります。前のコードでは、弾性検索1.5が使用され、マッチングは 'and'と 'or'のコレクションによって行われました。これはもう動作しません。

また、クエリは、(すべてではなく)渡されたグループIDのいずれかを持つ誰かを取得できるようにしたいと思います。フィルターの2番目のboolクエリーでこれを実行しようとしました。

理想的には、私は「athing」マッチを持つクエリをしたい、グループID 123565または5555のいずれかで、所有者のID 123と存在している3453のアイテムIDに属し

答えて

1

bool: 
    must: [ term: ownerId, term: itemId] 
    should: [ term: groupId, term: groupId ] 
    minimum_should_match: 1 
を試してみてください
+0

これはうまくいったようですね、ありがとう! 1つの質問しかし、私の理解からは、結果は少なくとも必要と一致しなければならないことを意味します。それは、必要条件と一致する結果を意味しますが、必要条件のどれも通過できませんか? –

関連する問題