2017-09-08 11 views
0

"group"タイプのアイテムを除外するクエリの一部を記述しようとしていて、指定されたIDの配列にないグループIDを持っています。私はmustとnot_notを使ってboolクエリーを作成し始めましたが、 "idが指定された配列ではない"と書く方法がうまくいかなかったのです。 「ES 5.5互換性がある。ここで働いていた古いクエリです。指定された配列にないアイテムのElasticSearchクエリ

:and => [ 
    { 
    term: { 
     type: 'group' 
    } 
    }, 
    { 
    :not => { 
     terms: { 
     group_id: group_ids 
     } 
    } 
    }, 
    { 
    :not => { 
     terms: { 
     user_id: user_ids 
     } 
    } 
    } 
] 

group_idsとuser_idsが配列されている。

+0

mustとnot_notの代わりに、あなたが持つIDで 'should'と' minimum_should_match'を使用してください。それ以外の場合は、いくつかのコードを詳しく説明してください:) – rndus2r

答えて

0
bool: { 
    must: { 
    term: { 
     kind: 'group' 
    } 
    }, 
    must_not: [ 
    { 
     terms: { 
     group_id: group_ids 
     } 
    }, 
    { 
     terms: { 
     user_id: user_ids 
     } 
    } 
    ] 
} 
0

あなたはおそらく、あなたがしてBoolクエリを使用することができます。IDを持つ配列を解析していませんfilter句を入力し、そのフィルタ内で新しいboolクエリを開始しますmustNot句を付けて、その句の中にIDでtermsのクエリを追加します。

関連する問題