2011-11-29 17 views
7

Mam kwerendę, która wygląda tak:Zapytanie DSL - Nieporozumienie filtrów

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

Mój typ ma i pole parent_idwall_id. Jak mogę zmodyfikować to zapytanie, aby uzyskać wszystkie typy, które nie mają parent_id i nie mają wall_id? Nie mogę tego odczytać z dokumentów. Dzięki za każdą oferowaną pomoc!

UPDATE

Mam następującą kwerendę, która działa, ale nie podoba mi się Wyłapywanie query w tytule. Czy istnieje sposób to zrobić bez konieczności dodać „Wyłapywanie

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

Odpowiedz

7

Jesteś prawie tam, po prostu trzeba użyć filtru and pod constant_score zapytania:

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

Wow, to Świetne rzeczy Musiałem dodać nawiasy klamrowe dookoła właściwości "filtra", ale działa. Dzięki! BTW, ten format jest tak finezyjny, czy istnieje źródło dobrej dokumentacji poza dokumentami elasticsearch.org? – swatkins

+0

Whoops, thanks Nie znam żadnego innego zasobu, ale warto wypróbować slajdy prezentacji, którą dałem: http://www.elasticsearch.org/tutorials/2011/08/28/ query-dsl-explan.html Nie wiem też, jakiego klienta używasz do komunikowania się z ES, ale jeśli znasz Perl, spójrz na SearchBuilder, który jest bardziej kompaktowy. Więcej Perl "składnia ish, która jest tłumaczona na standardowe zapytanie ES dsl: https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

Używam node.js i modułu elasticsearchclient. To świetna pomoc. Dzięki! – swatkins