如何基于字段在弹性搜索中获取唯一文档,并基于其他字段对结果进行“分组”

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

我刚开始进行弹性搜索,需要解决一个对我来说太复杂的问题。我在索引中有成千上万的文档,我必须根据一个字段从中查找唯一的文档(唯一的文档数最多可以有几百个)。对于那些唯一的文档,我必须按索引中的其他字段进行分组才能获得所需的结果。

索引中的文档看起来像这样:

{  
 "complexProperty1" : {
            "A" : "example",
            "B" : "1",
            "D" : true,
            "E" : "case",
            "F" : ["guide1","guide2"]
},
   "complexProperty2" : {
            "X" : "10",
            "Y" : ["specimen1","specimen2"],
            "Z" : "blueprint"
}
}

许多文档将complexProperty1.A作为“ example”。我只想包含它们一次,并且结果文档需要按complexProperty1.DcomplexProperty1.E分组,即,对于每对complexProperty1.DcomplexProperty1.E,我都有一个文档列表。我正在使用Nest实现此目的。

elasticsearch nest
1个回答
0
投票

您可以从一堆原始terms聚合开始,然后再回到terms

NEST DSL
POST complexities/_doc
{
  "complexProperty1": {
    "A": "example",
    "B": "1",
    "D": true,
    "E": "case",
    "F": [
      "guide1",
      "guide2"
    ]
  },
  "complexProperty2": {
    "X": "10",
    "Y": [
      "specimen1",
      "specimen2"
    ],
    "Z": "blueprint"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.