2013-05-16 141 views
7

我想在我的弹性搜索中找到具有给定ID的特定元素,但我无法找到一个简单的方法来完成此操作。elasticsearch搜索具有指定ID的元素示例

我看到http://www.elasticsearch.org/guide/reference/query-dsl/ids-query/但不能为我的生活弄清楚如何构建一个查询中使用它,或者当我做玩具周围ES-头或卷曲我看到这样的错误:

Parse Failure [Failed to parse source [{"query":{"match_all":{}},"ids 
{"values""1","4","100"]}}]]]; nested: SearchParseException[[dailyaggregates][4]: 
query[ConstantScore(NotDeleted(*:*))],from[-1],size[-1]: Parse Failure [No parser for 
element [ids]]]; }] 

等。谁能告诉我如何设置?谢谢。

编辑:我的这个错误的尝试是从es头,但通过卷曲类似的错误。我相信我所试过的就是这一些变种:

{ 
    "query": { 
    "match_all": {} 
    }, 
    "ids": { 
    "values": [ 
    "100" 
    ] 
    } 
} 
+0

可以粘贴您的curl命令逐字?你链接的例子应该可以工作,所以这可能是你误入歧途的问题。 :) –

+0

感谢您的回复。发布我正在使用的内容。我尝试过移动它,就像查询内容一样,并得到类似的错误...希望只是一些愚蠢的东西。 – cdietschrun

回答

17

ids是一个类型的查询,就像match,或match_all。因此,格式应该是:

{"query":{ "ids":{ "values": [ 100 ] } } } 

您也可以做到这一点作为一个过滤器,像这样:

{"filter":{ "query": {"ids":{ "values": [ 100 ] } } } } 
+0

好人。非常感谢。我发现英语在ES文档中很难理解,所以理解这些术语已经逃避了我。 – cdietschrun