2013-04-27 13 views
14

Próbuję trochę poprawić tę kwerendę. Indeks, którego szukam, ma również pole "entity" z identyfikatorem. Tak więc kilka rekordów będzie miało "entity": 16, "entity" 156 itd., W zależności od id jednostki. Muszę rozszerzyć to zapytanie w taki sposób, żebym mógł przekazać tablicę lub listę wartości, takich jak {: term => {: entity => [1, 16, 100]}} i odzyskać rekordy, które jedna z tych liczb całkowitych jako wartość ich jednostek. Jak dotąd nie miałem szczęścia, czy ktoś może mi pomóc?Zapytanie z wieloma wartościami na temat właściwości z jedną wartością w Elasticsearch

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

Odpowiedz

28

Użyj "terms" zamiast "term".

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

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

+0

Dziękuję bardzo! Uratowałeś mój dzień :) – NorthCat

+0

to zapytanie skontaktuje się z AND lub z OR? Chcę sprawdzić mój stan za pomocą LUB: w powyższej kwerendzie encji = 123 LUB encji = 1234 tak dalej. jak napisać to zapytanie? –

+0

@DeepParekh Czy byłeś w stanie napisać zapytanie do powyższego komentarza? AND lub OR? Mam coś takiego. (Muszę przekazać wiele wartości rozszerzenia do filtrowania.) Czy możesz mi pomóc rozwiązać ten problem? W tej chwili mogłem wysłać tylko jedną wartość rozszerzenia. Co się stanie, jeśli będę musiał przekazać wiele wartości rozszerzenia dla zapytania filtrującego? '.Filter (ft => ft.Term (t => t.Field (" content_type "). Wartość (rozszerzenie))))' – ASN

Powiązane problemy