【问题标题】:Fetch unique records for multiple fields in elastic search version 6.2.3在弹性搜索版本 6.2.3 中获取多个字段的唯一记录
【发布时间】:2018-12-06 04:00:42
【问题描述】:

我是弹性搜索的新手。使用 6.2.3 版本的弹性搜索。 我想要与以下 SQL 查询等效的弹性搜索:

SELECT DISTINCT customer_name , customer_services, customer_visible from customers;

我在弹性搜索中有大约 20 万个文档。我想要文档中多个字段的唯一记录。这些字段是 客户名称, 客户服务, customer_visible

我不是在寻找计数,我想获取指定字段的数据,每个字段没有重复数据。

我尝试了几个查询,但它并没有让我在所有领域都独一无二。 请帮助我为上述 sql 提供弹性搜索 6.2.3 等效查询。

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation elasticsearch-6


    【解决方案1】:

    下面是对我有用的 ES 6.3 等效查询。

    {
      "size": 0,
      "aggs": {
        "company_details": {
          "terms": {
            "size": 10000,
            "script": "doc['customer_global_cust_id'].value + ' | ' + doc['customer_name'].value + ' | ' + doc['customer_visible'].value + ' | ' +doc['customer_services'].values"
          }
        }
      }
    }
    

    上面,我使用了customer_services的值,因为它是文档中的数组字段,其余字段只是字符串值,因此使用了值。

    【讨论】:

      【解决方案2】:

      我不是专家,但据我所知,如果您只想在一个字段上进行选择不同,那么您可以使用Term Aggregation

      但是看看这个Post,Elasticsearch 不支持多个字段的术语聚合,因为它不会有很好的性能。您可以查看同一链接中关于在术语聚合中使用 script 建议的解决方案。

      【讨论】:

      • 我已经参考了这篇文章,尝试了脚本矩阵但没有用。
      猜你喜欢
      • 2016-11-05
      • 2020-06-04
      • 2017-09-13
      • 1970-01-01
      • 2016-02-05
      • 2020-10-21
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多