elasticsearch,Performance,elasticsearch" /> elasticsearch,Performance,elasticsearch" />

Performance elasticsearch中的ConstantCoreQuery

Performance elasticsearch中的ConstantCoreQuery,performance,elasticsearch,Performance,elasticsearch,我不确定ConstantCoreQuery在Elasticsearch 1.4中的性能如何工作(我认为1.0和2.0之间在这方面没有太大变化) 一个简单的查询必须计算分数,因此如果您执行以下查询: { "constant_score": "match": {"field":"text"} } 这显然比没有固定的分数要快 现在,如果您正在执行boolQuery,那么使用常量_分数包装boolQuery与包装每个must/should/must_not子句之间是否有区别? 例如: {

我不确定ConstantCoreQuery在Elasticsearch 1.4中的性能如何工作(我认为1.0和2.0之间在这方面没有太大变化)

一个简单的查询必须计算分数,因此如果您执行以下查询:

{ 
  "constant_score":
    "match": {"field":"text"}
}
这显然比没有固定的分数要快

现在,如果您正在执行boolQuery,那么使用常量_分数包装boolQuery与包装每个must/should/must_not子句之间是否有区别? 例如:

{
 "constant_score": {
  "bool":{
    "must": [
        {"match": {"field1": "text1"}},
        {"match": {"field2": "text2"}}
    ]
  }
 }
}

{
  "bool":{
    "must": [
        {"constant_score": {"match": {"field1": "text1"}}},
        {"constant_score": {"match": {"field2": "text2"}}}
    ]
  }
}
另一种情况是,当您使用2个
“should”
案例执行布尔过滤器时,默认情况下
“minimum\u should\u match”
设置为1,如果第一个测试案例正常,则不必检查其他案例

对于查询,分数很重要,因此每个
“应该”
都会被测试,并将其相加为命中分数。有没有一种方法可以像上面的过滤器一样,用常量分数包装bool查询,使其成为一个简单的“bool”或“bool”?我的意思是不检查每个文档上的每个
“应该”


感谢您的见解:)

我刚刚在本地elasticsearch(1.4.4)上测试了这一点

事实证明,如果在bool查询中使用shoulds包装一个常量_分数,那么它的行为不像boolFilter,而是返回每个文档。 因此,最小值应该是强制性的


关于在布尔查询或每个部分上使用常量分数,返回是相同的,每个结果都有相同的分数,但我仍然不知道之前是否计算过,然后设置为常量…

我刚刚在本地elasticsearch(1.4.4)上测试了这一点

事实证明,如果在bool查询中使用shoulds包装一个常量_分数,那么它的行为不像boolFilter,而是返回每个文档。 因此,最小值应该是强制性的

关于在bool查询或每个部分上使用常量_分数,返回值是相同的,每个结果都有相同的分数,但我仍然不知道它之前是否计算过,然后设置为常量