Kueri dengan beberapa nilai pada properti dengan satu nilai di Elasticsearch

Saya mencoba mengembangkan pertanyaan ini sedikit. Indeks yang saya cari juga memiliki bidang "entitas" dengan id. Jadi beberapa catatan akan memiliki "entitas" : 16, "entitas" 156 dll, tergantung pada id entitas. Saya perlu memperluas kueri ini sedemikian rupa sehingga saya dapat meneruskan array atau beberapa daftar nilai, seperti {:term => {:entity => [1, 16, 100]}} dan mendapatkan kembali catatan yang memiliki salah satu bilangan bulat ini sebagai nilai entitasnya. Saya belum beruntung sejauh ini, adakah yang bisa membantu saya?

{ 
  "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 
}

person Aristata    schedule 27.04.2013    source sumber


Jawaban (1)


Gunakan "terms" bukannya "term".

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

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

person mbj    schedule 27.04.2013
comment
Terima kasih banyak! Kamu menyelamatkan hariku :) - person NorthCat; 14.12.2015
comment
pertanyaan ini akan berhubungan dengan AND atau dengan OR? saya ingin memeriksa kondisi saya dengan OR seperti: pada kueri di atas entitas=123 OR entitas=1234 seterusnya. bagaimana cara menulis pertanyaan itu? - person David Coder; 31.03.2016
comment
@DeepParekh Apakah Anda dapat menulis pertanyaan untuk komentar di atas? DAN atau ATAU? Saya punya sesuatu seperti ini. (Saya harus meneruskan beberapa nilai ekstensi untuk difilter. Bisakah Anda membantu saya menyelesaikannya) Saat ini saya hanya dapat mengirimkan satu nilai ekstensi. Bagaimana jika saya harus memberikan beberapa nilai ekstensi untuk kueri filter? .Filter(ft => ft.Term(t => t.Field("content_type").Value(extension))))) - person ASN; 20.06.2016