首页 > 解决方案 > 如何通过值字段获取不同的文档

问题描述

我正在使用 ElasticSearch 6.3。
场景:数十万个文档中的大多数都有“123”字段,其中大多数值为“blabla”。少数人在那个领域有“blabla blo”。如果我设置 size: 10000 (如果默认大小,它们不会出现),它们会在查询结果中占据最后的位置。但我真的想要两个独特的记录:一个具有这些字段“123”:“blabla”,另一个具有字段“123”:“blabla blo”。我正在使用通配符并获取所有 10000 个文档。只需要这两个。我将提供一个带有这些记录的选择标签 HTML,但理想情况下只有两个!

查询正文:

{   
    "query": {
        "wildcard":{
            "324" : {
                "value":"*b*"
            }
        }
    },
    "size": 10000,
    "_source": ["324"]  
}

我该怎么做?我想,这个概念类似于查找值在该字段中未完全重复的记录。谢谢

标签: elasticsearchelasticsearch-aggregationelasticsearch-dsl

解决方案


这就是aggs的用途!

GET index_name/_search
{
  "query": {
    "wildcard": {
      "324": {
        "value": "*b*"
      }
    }
  },
  "size": 0,
  "aggs": {
    "324_uniques": {
      "terms": {
        "field": "324",
        "size": 10
      }
    }
  }
}

field可能是324OR 324.keyword,具体取决于您的映射。


推荐阅读