首页 > 解决方案 > 无法从弹性搜索返回唯一数据

问题描述

Array
(
    [index] => index_db,
    [type] => data
    [size] => 10
    [from] => 0
    [body] => Array
        (
            [query] => Array
                (
                    [query_string] => Array
                        (
                            [query] => search_this_data
                            [default_operator] => AND
                            [fields] => Array
                                (
                                    [0] => field1
                                    [1] => field2
                                )
                        )
               )
            [sort] => Array
                (
                    [field3_date] => Array
                        (
                            [order] => desc
                            [ignore_unmapped] => 1
                        )

                    [field4_name] => Array
                        (
                            [order] => desc
                            [ignore_unmapped] => 1
                        )

                )

            [aggs] => Array
                (
                    [unique_data] => Array
                        (
                            [terms] => Array
                                (
                                    [field] => field5
                                )

                        )

                )

        )

)

上面的代码是 iam 使用的,查询返回所有行而不考虑 field5 的不同过滤器。如何在查询中使用聚合,以便它应该根据 field5 返回唯一数据。除了聚合之外,还有其他方法可以在弹性搜索中使用不同的操作。

标签: elasticsearchelasticsearch-aggregation

解决方案


不,您必须使用聚合。但是如果您只需要每个 field5 值的最后一个(或一个)文档,则可以使用 field5 作为键并更新它而不是重复。当然,这取决于您的上下文...


推荐阅读