【问题标题】:Elastic Search Filter Combination弹性搜索过滤器组合
【发布时间】:2018-09-06 00:34:22
【问题描述】:

我们的问题是我们有多次类似的条目,并且只想计算一次。

表:
car name|inserted_by_user|insert_date Audi A7|0123|22.01.2016 Audi A7|0290|24.01.2016 Audi A7|0290|24.01.2016 BMW M2|0290|25.01.2016 Audi A7|0290|29.01.2016

我想得到->

奥迪 A7:1
宝马 M2:1

有可能吗?

【问题讨论】:

    标签: sql elasticsearch elasticsearch-5


    【解决方案1】:

    您应该使用术语聚合。在您的情况下,它看起来像这样:

    GET /_search
    {
        "aggs" : {
           "car_names" : {
               "terms" : { "field" : "car_name" }
            }
        }
    }
    

    响应应采用以下模式:

    ...
    "aggregations" : {
        "car_names" : {
            "doc_count_error_upper_bound": 0, 
            "sum_other_doc_count": 0, 
            "buckets" : [ 
                {
                    "key" : "Audi A7",
                    "doc_count" : 6
                },
                {
                    "key" : "BMW M2",
                    "doc_count" : 1
                }
            ]
        }
    }
    

    【讨论】:

    • 错了,我需要取回奥迪 A7 1 而不是 6(我想将所有奥迪 A7 都算作一个结果)。你有什么解决办法吗?
    • 据我所知,ES 中没有查询可以做到这一点。 doc_count 将始终返回。为什么这对你来说是个问题?只是不要使用该字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多