elasticsearch - 过滤掉弹性搜索结果的查询以避免数据中的重复删除
问题描述
=> 假设有一个I1
在 Type/Mapping 上定义的索引M1
。
=> 存储d1.... dn
类型/映射的文档M1
具有id
属性(唯一)和rid
(rootid)属性,这些属性不是唯一的,但对于某些 id 集很常见。
=> 每次使用索引搜索I1
都会产生文档dx...dy
。
问题:需要找出一种方法来查询I1
产生文档的索引,dm.... dn
使得rid
(rootid) 是唯一的。简而言之,过滤掉重复的摆脱。
解决方法:使用O(n)
代理层在搜索结果中过滤掉它们。
高效解决方案:使用映射中的父子关系对弹性数据进行建模(此解决方案也需要时间和对现有数据的重新调整)
有没有办法让 Elastic Search DSL 查询以我们可以直接在索引器本身中执行此操作的方式进行?
解决方案
解决这个问题的三种方法
- 使用需要对现有数据进行大量更改的父子模型。
- 使用折叠功能弹性搜索(单字段折叠支持到 5.6,多字段折叠从 6.x 开始)。(这种方法不会产生确切的计数)
- 使用一个标志,只对一个 rid(rootid) 和 false 保持相同,并在搜索查询中对标志有一个条件。(简单并解决所有情况)
推荐阅读
- sql - 相关标量子查询只能包含 spark sql 的相等谓词问题
- database - do循环中的错误,在SAS中的一段时间内创建变量
- csv - 用骆驼导入CSV到SQL,过滤问题?
- c# - WebDeploy 的发布设置中没有“在目标位置删除其他文件”选项
- python - 在 Python 中创建两个从原始列派生的新列
- python - 将php转换为python base64
- python - 如何抓取使用 JavaScript 构建 HTML 的网页?
- jenkins - 如何保存 Jenkins Job Config History 中的更改?
- django - 如何设置 Django Machina 自定义权限
- android - 通过物理设备运行时,Glide 不会显示来自 Firebase 的图像