2013-04-27 9 views
14

Sto provando a costruire un po 'su questa query. L'indice che sto cercando ha anche un campo "entità" con un id. Quindi alcuni record avranno "entità": 16, "entità" 156 ecc., A seconda dell'ID dell'entità. Ho bisogno di espandere questa query in modo tale che possa passare una matrice o un elenco di valori in, come {: term => {: entity => [1, 16, 100]}} e recuperare i record che hanno uno di questi numeri interi come valore di entità. Finora non ho avuto fortuna, qualcuno può aiutarmi?Query con più valori su una proprietà con un valore 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 
} 

risposta

28

Uso "terms" invece di "term".

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

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

+0

La ringrazio molto! Hai salvato la mia giornata :) – NorthCat

+0

questa query verrà contattata con AND o con OR? Voglio controllare le mie condizioni con OR come: in query entity = 123 o entity = 1234 così via. come scrivere quella domanda? –

+0

@DeepParekh Sei riuscito a scrivere la query per il commento sopra? AND o OR? Ho qualcosa di simile. (Devo passare più valori di estensione al filtro. Puoi aiutarmi a risolvere questo problema) In questo momento potrei inviare solo un valore di estensione. Cosa succede se devo passare più valori di estensione per la query di filtro? '.Filter (ft => ft.Term (t => t.Field (" content_type "). Valore (estensione)))))' – ASN

Problemi correlati