gpt4 book ai didi

elasticsearch - elasticsearch和过滤器优化

转载 作者:行者123 更新时间:2023-12-03 01:04:03 25 4
gpt4 key购买 nike

Elasticsearch是否会自动优化过滤器?例如:在“和”过滤器中,如果为gte和lte运算符分别定义了多个数值范围过滤器,而不是同时具有lte和gte界限的一个范围过滤器,会不会引起性能问题? ES会自动优化这些过滤器吗?

"filter" : {
"and" : [
{
"range" : {
"age" : {
"gte": 10
}
}
},
{
"range" : {
"age" : {
"lte": 90
}
}
},
{
"range" : {
"age" : {
"gte": 30
}
}
}
]}

更新

想要添加:合并边界是有意义的,但我想检查一下这种情况,以防我可以动态创建过滤器的用户执行这种情况。

最佳答案

使用过滤器的主要经验法则是,应始终首先应用限制性最强的过滤器,以减少匹配的文档的集合,并允许下一个过滤器尽可能少地处理文档。

此外,在您所展示的情况下,对于同一个range字段使用三个不同的age过滤器并没有多大意义,您应该将它们合并为一个:

"filter": {
"range": {
"age": {
"gte": 30,
"lte": 90
}
}
}

另外请注意,应尽可能使用 bool/must而不是 and过滤器(如 in this excellent article所述),主要是因为未缓存 and过滤器。

最后,以上内容仅适用于2.0之前的Elasticsearch版本。从2.0版本开始,整个查询/过滤器DSL将为 completely overhauled,查询将更加智能。

更新

由于您的用户可以创建自己的过滤器,因此主要的经验法则仍然存在,即您应尝试以限制最严格的过滤器排在第一的方式订购过滤器。但是,如果您的用户确实有能力创建自己的过滤器,并且您不干扰他们提交的内容,那么您应该教育他们(如果有可能)如何最好地创建过滤器。

关于elasticsearch - elasticsearch和过滤器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com