跨多个索引查询,有利于基于索引(或标准?)的重复文档匹配

问题描述 投票:0回答:1

假设以下标准:

  1. 有 2 个索引:
    master-index
    customer-index
  2. 这 2 个索引有一个别名:
    customer-alias
  3. customer-index
    中的任何文档都是
    master-index
    中已修改选定字段值的文档的副本。

类比为文档修订系统,其中

master-index
中的初始文档是原始文档。如果客户修改该文档中的字段,则该文档将(通过
_reindex
)复制到
customer-index
,并添加字段修改以及添加新字段,例如
is_edited = true

这意味着

master-index
中的文档将与
_id
中的文档具有相同的
customer-index

正常查询可能会匹配这个客户修改的文档和主文档,但是在这种重复的情况下,我只想要修改后的文档。

注意:我不想将查询限制为仅重复项,但如果存在重复项,我只想返回客户索引中的重复文档。

换句话说,对于查询中匹配的重复项(来自不同索引的相同

_id
),仅对
customer-index
中的文档进行重复数据删除或过滤。

我尝试折叠到

_id
,但我不喜欢
customer-index
文档。

我尝试过聚合,也失败了。 (有没有办法限制聚合返回的字段?)

我已经尝试过

indices_boost
但没有成功。

我觉得这应该是可能的,但我只是没有想出正确的语法?

elasticsearch
1个回答
0
投票

折叠API

我尝试折叠到 _id,但我不喜欢客户索引文档。

你已经用过了,虽然好像你说的那样,你不能偏爱

customer-index

使用collapse API时,您可以简单地根据排序部分中的特定字段(此处为

_index
)来支持文档。因此,请重试,同时考虑使用
desc
asc
值作为排序参数以及
_index
字段作为排序字段的排序部分。

最后,您可能需要将以下部分添加到折叠查询中:

  "sort": [
    {
      "_index": { 
        "order": "asc"
      }
    }
  ]
© www.soinside.com 2019 - 2024. All rights reserved.