请问把如下一个区间查询, 分成两个区间的交集来查询,性能上是否一样。ES是否会把分开的两个查询优化合并成一个呢?
{
"range": {
"date": {
"gt": "2017-09-01",
"lt": "2017-09-01"
}
}
}
是否和
{
"bool": {
"must": [
{
"range": {
"date": {
"gt": "2017-09-01"
}
}
},
{
"range": {
"date": {
"lt": "2017-09-01"
}
}
}
]
}
}
{
"range": {
"date": {
"gt": "2017-09-01",
"lt": "2017-09-01"
}
}
}
是否和
{
"bool": {
"must": [
{
"range": {
"date": {
"gt": "2017-09-01"
}
}
},
{
"range": {
"date": {
"lt": "2017-09-01"
}
}
}
]
}
}
2 个回复
Cheetah
赞同来自: novia 、ChenMing
基于以上,那么你的问题就得到解决了,单纯从效率来讲的话,一个建立N个bitset,第二个建立N*2个bitset,从这里来讲,第一个号
但是从另外一方面来讲,用到第一个条件的情况很少,毕竟要匹配2个条件,那么意味着缓存使用率可能不高(这里使用可能,因为你这和你业务相关)
反之,第二个查询从广义上讲,用到缓存的几率会大很多
所以你要根据你的业务综合考虑,不是简单的哪个效率高
ChenMing - 00后
赞同来自: