ES版本 6.4.3
数据量 800G,1.8e个文档
需求:根据query对商品的某一中文字段进行聚合
遇到的问题:相同的DSL,对改中文字段进行term聚合响应时间在1s左右,同时还有一个字段是该中文字段的MD5后转成了一个10位数字的long类型字段,对该字段进行聚合响应时间竟然降到200ms左右,然后通过增加一个topHit子聚合拿到以前的中文值,整体的响应时间降低了70%。
疑惑:为什么keyword字段和long类型的字段term聚合速度差这么大,是不是中文的原因呢
数据量 800G,1.8e个文档
需求:根据query对商品的某一中文字段进行聚合
遇到的问题:相同的DSL,对改中文字段进行term聚合响应时间在1s左右,同时还有一个字段是该中文字段的MD5后转成了一个10位数字的long类型字段,对该字段进行聚合响应时间竟然降到200ms左右,然后通过增加一个topHit子聚合拿到以前的中文值,整体的响应时间降低了70%。
疑惑:为什么keyword字段和long类型的字段term聚合速度差这么大,是不是中文的原因呢
6 个回复
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
JiangJibo - 喊我雷锋
赞同来自:
正向索引是通过docId取_source的时候用的,和terms聚合没有的query阶段没有关系吧。我可以看看源码,不过近两天没有时间,等我过几天再来回复
FFFrp
赞同来自:
eager_global_ordinal测试下
FFFrp
赞同来自:
可以看下Wood大佬的回复 https://elasticsearch.cn/question/1797
JiangJibo - 喊我雷锋
赞同来自:
guoyanbiao520
赞同来自:
"bool": {
"should": [
{
"term": {
"type": {
"value": "1",
"boost": 7.0
}
}
},
{
"term": {
"type": {
"value": "2",
"boost": 2.5
}
}
},
{
"term": {
"type": {
"value": "3",
"boost": 1.0
}
}
}
]
}
}
我这边测试这个查询语法,如果是long确实要比keyword速度查询要快,不过不是聚合查询,是直接搜索,也没有明白为什么