2013-04-27 7 views
14

Ich versuche, auf diese Abfrage ein wenig aufzubauen. Der Index, den ich suche, hat auch ein Feld "entity" mit einer ID. So haben einige Datensätze "Entity": 16, "Entity" 156 usw., abhängig von der ID der Entität. Ich muss diese Abfrage so erweitern, dass ich ein Array oder eine Liste von Werten übergeben kann, z. B. {: term => {: entity => [1, 16, 100]}}, und Datensätze zurückerhalten, die eine dieser ganzen Zahlen als ihr Entity-Wert. Ich hatte bisher kein Glück, kann mir jemand helfen?Abfrage mit mehreren Werten auf einer Eigenschaft mit einem Wert in 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 
} 

Antwort

28

Verwenden "terms" statt "term".

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

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

+0

Vielen Dank! Du hast meinen Tag gerettet :) – NorthCat

+0

diese Abfrage wird Kontakt mit UND oder mit ODER? Ich möchte meine Bedingung mit OR überprüfen wie in obiger Abfrage entity = 123 ODER entity = 1234 usw. Wie schreibe ich diese Abfrage? –

+0

@DeepParekh Konnten Sie die Abfrage für den obigen Kommentar schreiben? UND ODER ODER? Ich habe so etwas. (Ich muss mehrere Werte der Erweiterung an Filter übergeben. Können Sie mir helfen, dies zu lösen) Im Moment konnte ich nur einen Wert der Erweiterung senden. Was passiert, wenn ich mehrere Werte der Erweiterung für die Filterabfrage übergeben muss? '.Filter (ft => ft.Term (t => t.Field (" content_type "). Wert (Erweiterung)))))' – ASN

Verwandte Themen