1、数值一般配置成long类型
在做term查询的时候 如果是数值类型 查询效率低 ,因此建议把对应的字段都改成keyword类型
部分mapping
“headDarDetail”: {
“type”: “long”
},
headDarDetail 为long类型
部分查询语句 term 查询
“term”:{
“headDarDetail”:{
“value”:0,
“boost”:1
}
}
searchPorfile分析 下面这个这个阶段 耗时占比 97%
PointRangeQuery headDarDetail:[0 TO 0] 196.0ms 196.0ms 97.17%
headDarDetail 被解析成了范围查询
建议: headDarDetail 类型改成keyword 类型避免范围查询。
对于时间类型的数据优化,类似。
相对于 Term Query,Range Query 的执行时间要更长一些,当你限制范围时,Elasticsearch 只需要匹配更少的词条,范围越小,响应时间越短。如果有range的需求可以用datetype类型,字段类型是keyword还是date,这里要根据业务需求做取舍看是keyword 走term查询还是走date type做range。
https://stackoverflow.com/questions/54170329/why-are-is-indexordocvaluesquery-taking-so-long