【问题标题】:How to get documents that are differents by value field如何通过值字段获取不同的文档
【发布时间】:2020-07-01 09:57:40
【问题描述】:

我正在使用 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"]  
}

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

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation elasticsearch-dsl


    【解决方案1】:

    这就是 aggs 的用途!

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

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

    【讨论】:

    • 请注意,带有前缀通配符的通配符查询会降低集群的性能。
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2014-12-13
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多