首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取与类型%1匹配但不在类型%2中的文档

获取与类型%1匹配但不在类型%2中的文档
EN

Stack Overflow用户
提问于 2017-10-06 13:19:46
回答 1查看 39关注 0票数 0

我有一个索引结构,其中类型是日期,每种类型都有几个文档。我希望获取类型1中存在的所有文档,但类型2中必须缺少这些文档。举个例子:

代码语言:javascript
复制
Type-1 ---> id list = [1,2,3,4,5,6]
Type-2 ---> id list = [2,3,7,8,9]

我正在寻找的查询应该只返回id = 1,4,5,6的type-1文档。我使用es-py客户端来实现上述目的。

PS:我总是可以获得分别匹配type-1和type-2的文档,然后对它们进行迭代,以获得我需要的内容。但这是我为了性能而想要避免的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-10-06 14:51:40

我的第一个想法是,您的问题是关于两种类型的文档集的差异(减法)。但是正如您所提到的,您不能在两个类型中拥有相同的文档,而在两个文档(_uid = _type#_id)中拥有相同的id

所以您的问题是关于一个类型:您需要join-Query-1中的all _id-Values的补码,它也属于type-2。

为此,您可以使用Parent-Child-Relationship,但在这种情况下,您必须更改索引进程。

不幸的是,elasticsearch中的两种类型之间没有其他的“内置”连接(例如solr会有所帮助)。

您可以通过聚合从连接中获取所有ids,并在没有elasticsearch的情况下构建补集,但这只适用于类型1的小集合。

因此,在我看来,您需要构建自己的类似于ParentJoinPlugin的搜索插件

起始点是:https://github.com/elastic/elasticsearch/blob/v5.6.2/modules/parent-join/src/main/java/org/elasticsearch/join/query/HasParentQueryBuilder.java

但请注意:如果类型-1的文档属于另一个分片,那么类型-2的文档即使使用自己的SearchPlugin也不能联接。

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

https://stackoverflow.com/questions/46598725

复制
相关文章

相似问题

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