2011-11-29 11 views
7

Ho una domanda che assomiglia a questo:Query DSL - Incomprensione di filtri

{ 
    "query": { 
    "constant_score": 
     "filter": { 
     "missing": { 
      "field": "parent_id" 
     } 
     } 
    } 
}, 
"size": limit, 
"from": offset 
} 

mio tipo ha un e un campo di parent_idwall_id. Come posso modificare questa query in modo da poter ottenere tutti i tipi che non hanno uno parent_id e non hanno uno wall_id? Non riesco a decifrarlo dai documenti. Grazie per l'aiuto offerto!

UPDATE

Ho la seguente query che funziona, ma non mi piace il catchall query sul titolo. C'è un modo per farlo senza dover aggiungere un "ripostiglio

{ 
    "query":{ 
    "filtered":{ 
    "query":{ 
     "field":{ "title":"*" } 
    }, 
    "filter":{ 
     "and":{ 
      "filters":[ 
       { 
       "missing":{ "field":"parent_id" } 
       }, 
       { 
       "missing":{ "field":"wall_id" } 
       } 
      ] 
     } 
    } 
    } 
}, "size":10, "from":0 
} 

risposta

7

Sei quasi, è sufficiente utilizzare il filtro and sotto il tuo constant_score query:?

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "and":[ 
      { "missing":{ "field":"parent_id" }}, 
      { "missing":{ "field":"wall_id" }} 
     ] 
     } 
    } 
    } 
} 
+0

Wow, che è cose grandi, ho dovuto aggiungere parentesi graffe attorno alla proprietà "filtro", ma funziona. Grazie! BTW, questo formato è così schizzinoso, c'è una fonte di buona documentazione a parte i documenti elasticsearch.org? – swatkins

+0

Whoops, grazie Non c'è un'altra risorsa che io conosca, ma potresti voler controllare le diapositive per una presentazione che ho dato: http://www.elasticsearch.org/tutorials/2011/08/28/ query-dsl-explain.html Inoltre, non so quale client stai usando per parlare con ES, ma se hai familiarità con Perl, dai un'occhiata a SearchBuilder, che è un più compatto Perl 'sintassi ish che viene tradotta nella query standard ES dsl: https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

Sto usando node.js e il modulo elasticsearchclient. È un grande aiuto. Grazie! – swatkins