2016-02-05 1 views
1

Я не знаю, как работает ConstantScoreQuery относительно производительности в Elasticsearch 1.4 (я не думаю, что многое изменилось между 1,0 и 2,0 относительно этого)ConstantScoreQuery в elasticsearch

Простой запрос должен вычислить счет, так что если вы делаете запрос такой:

{ 
    "constant_score": 
    "match": {"field":"text"} 
} 

это, очевидно, быстрее, чем без константы.

Теперь, если вы делаете boolQuery, существует ли разница между обертыванием boolQuery с константой_score или обертыванием каждого предложения must/should/must_not? exemples:

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

против

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

Еще один, когда вы делаете boolFilter с 2 "should" случаях, по умолчанию "minimum_should_match" устанавливается равным 1, и если первый случай испытания в норме она не потрудитесь проверить другой.

С запросами оценка важна, поэтому каждый "should" проверен и добавлен к результату удара. Есть ли способ с константой_score обертывать запрос bool, чтобы сделать его простым «OR» bool, как этот фильтр? Под этим я имею в виду не проверять каждый "should" на каждый документ.

Спасибо за ваши идеи :)

ответ

0

Я просто проверял это на локальный elasticsearch (1.4.4)

Оказывается, если обернуть вокруг constant_score запроса BOOL с долженствованиями не ведет как boolFilter, он возвращает каждый документ. Таким образом, минимум должен соответствовать обязательно.

Об использовании constant_score в bool-запросе или каждой части, результат одинаков, каждый результат имеет одинаковую оценку, но я до сих пор не знаю, была ли она вычислена до и затем установлена ​​на константу ...

Смежные вопросы