我正在嘗試爲Elasticsearch查詢獲得最佳性能。
我需要類似這樣的MySQL查詢的內容:對Elasticsearch查詢的MySQL查詢
SELECT * FROM table WHERE field_a IN ('value1', 'value2') AND field_b = value
值的field_a
數目可以是1之間,讓我們說20 所有字段要求完全匹配。
現在,我使用的查詢:
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"should" : [
{ "term" : {"field_a" : "value1"}},
{ "term" : {"field_a" : "value2"}}
],
"must" : {
"term" : {"field_b" : "value"}
}
}
}
}
}
}
該指數已經在大約30萬份文檔了這一點,這查詢返回的結果中0.04秒 - 0.06S(通過捲曲)。
有沒有更好的方法來獲得我需要的結果?
更新
該field_a是一個字符串未分析。
field_b是一個整數。
'field_a'的值是數字嗎?如果是這樣,您可以使用'gt'和'lt'運算符進行大範圍檢查。 –
你真的需要一個不斷的分數嗎?你是無論如何使用過濾塊,所以得分對你來說無所謂 – shiladitya
@AvihooMamka'field_a'不是數字。 –