2013-04-27 21 views
14

私はこのクエリを少し構築しようとしています。私が探しているインデックスには、idを持つフィールド "entity"もあります。したがって、エンティティのIDに応じて、いくつかのレコードには「エンティティ」16、「エンティティ」156などがあります。 {:term => {:entity => [1,16,100]}}のような配列や値のリストを渡すことができるようにこのクエリを拡張する必要があります。エンティティ値としてこれらの整数の1つ。私は今まで運がなかった、誰かが私を助けることができますか?Elasticsearchで1つの値を持つプロパティで複数の値をクエリする

{ 
    "query" : { 

    "bool" : { 
     "must" : [ 
     { 
      "term" : {"user_type" : "alpha"} 
     }, 
     { 
      "term" :{"area" : "16"} 
     } 
     ], 
     "must_not" : [], 
     "should" : [] 
    } 
    }, 
    "filter": { 
    "or" : [{ 
     "and" : [ 
      { "term" : { "area" : "16" } }, 
      { "term" : { "date" : "05072013" } } 
     ] 
    }, { 
     "and" : [ 
      { "term" : { "area" : "16" } }, 
      { "term" : { "date" : "blank" } } 
     ] 
    } 


    ] 
    }, 
"from" : 0, 
"size" : 100 
} 

答えて

28

"term"の代わりに"terms"を使用してください。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html

{ "terms" : { "entity" : [ 123, 1234, ... ] }}

+0

ありがとうございました!あなたは私の日を救った: – NorthCat

+0

このクエリは、ANDまたはORと連絡しますか?私は自分の状態をORで確認したい:上記のクエリエンティティ= 123またはORエンティティ= 1234など。そのクエリを書く方法? –

+0

@DeepParekh上記のコメントに対するクエリを作成できましたか? ANDまたはOR? 私はこれのようなものを持っています。 (私はフィルタに複数の値を渡す必要があります。これを解決する手助けができますか?)今は、拡張の値を1つしか送信できませんでした。フィルタクエリに複数の拡張子の値を渡す必要がある場合はどうすればよいですか? (ft => ft.Term(t => t.Field( "content_type")。値(拡張子)))))) ' – ASN

関連する問題