2011-11-29 76 views
7

误区我有一个查询,看起来像这样:查询DSL - 滤波器

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

我喜欢的类型有parent_idwall_id场。我如何修改此查询,以便我可以获得所有没有parent_id且没有wall_id的类型?我似乎无法从文档中解读它。感谢您提供的任何帮助!

UPDATE

我有以下的查询工作,但我不喜欢的标题包罗万象query。有没有办法做到这一点,而无需添加一个“包罗万象

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

回答

7

就快,你只需要使用and过滤器的constant_score查询下:

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

哇,这是但是它可以工作,谢谢!顺便说一下,这种格式非常挑剔,除了elasticsearch.org文档外,还有不错的文档资源吗? – swatkins

+0

哎呀,谢谢。没有我知道的另一个资源,但您可能想查看我给出的演示文稿的幻灯片:http://www.elasticsearch.org/tutorials/2011/08/28/另外,我不知道你用什么客户端来与ES交谈,但是如果你熟悉Perl,可以看看SearchBuilder,它是一个更紧凑的Perl。 'ish语法被翻译成标准ES查询dsl:https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

我使用node.js和elasticsearchclient模块。这是一个很大的帮助。谢谢! – swatkins