elasticsearch Elasticsearch聚合范围问题,elasticsearch,elasticsearch" /> elasticsearch Elasticsearch聚合范围问题,elasticsearch,elasticsearch" />

elasticsearch Elasticsearch聚合范围问题

elasticsearch Elasticsearch聚合范围问题,elasticsearch,elasticsearch,我有一个Elasticsearch索引,有超过1亿条记录 如果我在下面运行查询,则响应(1条记录)将在1秒内出现 { "query": { "bool": { "must":{ "term": { "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0" } } }

我有一个Elasticsearch索引,有超过1亿条记录

如果我在下面运行查询,则响应(1条记录)将在1秒内出现

{
    "query": {
        "bool": {
            "must":{
                "term": {
                "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0"
                }
            }

        }
    }
}
但如果我在下面运行查询,则响应将在2分钟后出现。

{
    "query": {
        "bool": {
            "must":{
                "term": {
                "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0"
                }
            }

        }
    },

    "aggs": {
        "mywordcloud": {
            "terms": {
                "field": "post.content_terms"
            }
        }
    }
}
我不知道为什么在查询顶部添加聚合后要花费这么多时间,其中_id=a36403af960840b86452bf1a6bd42fde3b4773e0只与一条记录匹配

根据我的假设,弹性搜索是对数据的输出应用聚合。所以从技术上讲,它应该在1条记录上运行聚合,并且响应必须在1秒之内到达,这与不使用aggs的情况几乎相同

如何解决这个问题


我使用的是弹性搜索版本<强> 1.5

> P>这是一个很好的例子,你需要考虑选择<代码>过滤器>代码>上下文,而不是代码>查询< /COD>上下文。p> 尝试使用
过滤器运行相同的查询,如下所示:

GET my-index/_search
{
    "query": {
        "bool": {
            "filter":{
                "term": {
                "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0"
                }
            }

        }
    },

    "aggs": {
        "mywordcloud": {
            "terms": {
                "field": "post.content_terms"
            }
        }
    }
}
我的第一个建议

是否要升级:- 我在1.7.2中尝试了您的第二个查询,速度非常快。我认为升级肯定会解决你的问题

第二项建议 不确定它是否适用于弹性搜索1.5版

请尝试以下查询:-

{
    "query": {
        "constant_score": {
            "filter":{
                "term": {
                "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0"
                }
            }
        }
    },
    "aggs": {
        "mywordcloud": {
            "terms": {
                "field": "post.content_terms"
            }
        }
    }
}


我知道这将提供不同的数据,但您可以使用此方法更改您的逻辑。

为什么不升级到最新的5.3版本,它有很多改进,然后检查结果和响应时间。我计划升级,但不确定它是否会解决aggs范围问题。
 {
        "aggregations": {
            "bylife": {
                "terms": {
                    "field": "post.content_terms"
                },
                "aggregations": {
                    "bylife2": {
                        "filter": {
                            "term": {
                                "_id": "a36403af960840b86452bf1a6bd42fde3b4773e0"
                            }
                        }
                    }
                }
            }
        }
    }