首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_mget可以通过非ID字段检索吗?

_mget可以通过非ID字段检索吗?
EN

Stack Overflow用户
提问于 2016-01-14 18:50:19
回答 1查看 120关注 0票数 1

我有一个要求,通过电子邮件地址在ES中查找多个用户(以及没有找到的报告)从我有限的(如2天)的ES知识,这听起来像是一个自然适合的mget操作?

但是,根据文档,mget似乎只支持通过ID字段进行检索?是否可以将mget与另一个字段(如电子邮件)结合使用?字段也是嵌套字段(如nested_object.email)。

有可能告诉mget使用另一个字段吗?是否有更好的查询类型更适合此要求(包括报告哪些搜索项失败)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 05:07:24

您需要的是_msearch端点,也就是多搜索API。它允许你一次发送多个搜索。

代码语言:javascript
复制
$ cat requests
{"index" : "users"}
{"query" : {"term" : {"email":"name1@server.com"}}}
{"index" : "users"}
{"query" : {"term" : {"email":"name2@server.com"}}}
{"index" : "users"}
{"query" : {"term" : {"email":"name3@server.com"}}}
{"index" : "users"}
{"query" : {"term" : {"email":"name4@server.com"}}}

$ curl -XGET localhost:9200/_msearch --data-binary "@requests"; echo

要回答评论中的另一个问题,这取决于您是否使用了预2.0 ES版本。在ES 2.0之前,查询和过滤器在描述方式上有所不同(过滤器速度更快、更可计算,并且没有参与评分)。从2.0开始,查询和筛选器已经合并。 (完整的故事就在这里)和查询也可以用于过滤器,反之亦然。仍然有一个过滤器上下文,当您不需要评分,但希望您的过滤器是可缓存的时候,您可以使用它。执行将由ES自动优化,以尽可能高效的顺序运行。

哦,是的,_mget只适用于ID。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34797434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档