2011-11-29 5 views
7

J'ai une requête qui ressemble à ceci:DSL Requête - Malentendu des filtres

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

Mon type a une parent_id et un champ wall_id. Comment puis-je modifier cette requête afin que je puisse obtenir tous les types qui n'ont pas parent_id et qui n'ont pas de wall_id? Je n'arrive pas à le déchiffrer des docs. Merci pour toute aide offerte!

MISE À JOUR

J'ai la requête suivante qui fonctionne, mais je n'aime pas le catchall query sur le titre. Est-il possible de le faire sans avoir à ajouter un « catchall

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

Répondre

7

Vous y êtes presque, il vous suffit d'utiliser le filtre and sous votre constant_score requête:

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

Wow, c'est J'ai dû rajouter des accolades autour de la propriété "filter", mais ça marche ... Merci BTW, ce format est si compliqué, y a-t-il une bonne documentation en dehors des docs de elasticsearch.org? – swatkins

+0

Oups, merci Il n'y a pas d'autre ressource que je connaisse, mais vous voudrez peut-être consulter les diapositives pour une présentation que j'ai donnée: http://www.elasticsearch.org/tutorials/2011/08/28/ query-dsl-explain.html En outre, je ne sais pas quel client vous utilisez pour parler à ES, mais si vous êtes familier avec Perl, jetez un oeil à la SearchBuilder, qui est un plus compact Perl La syntaxe ish qui est traduite dans la requête ES standard dsl: https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

J'utilise node.js et le module elasticsearchclient. C'est une aide précieuse. Merci! – swatkins