Elasticsearch 쿼리에 대해 최상의 성능을 얻으려고합니다.MySQL 쿼리에서 Elasticsearch 쿼리
SELECT * FROM table WHERE field_a IN ('value1', 'value2') AND field_b = value
이 field_a
값의 수는 1 사이와의이 (20) 모든 항목이 정확히 일치를 필요로 가정 해 봅시다 수
나는이 MySQL의 쿼리와 유사한 무언가를해야합니다.
지금 내가 사용하고 쿼리
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"should" : [
{ "term" : {"field_a" : "value1"}},
{ "term" : {"field_a" : "value2"}}
],
"must" : {
"term" : {"field_b" : "value"}
}
}
}
}
}
}
지수는 3 개 천만 문서 약이 시점에서 가지고 있으며,이 쿼리 0.04s에 결과를 반환 - (컬을 통해) 0.06s합니다.
필요한 결과를 얻는 더 좋은 방법이 있습니까?
업데이트
field_a는 분석되지 않은 문자열입니다.
field_b는 정수입니다. 당신이 값 목록이있는 경우
'field_a '의 값은 숫자입니까? 그렇다면 넓은 범위의 검사를 위해'gt'와'lt' 연산자를 사용할 수 있습니다. –
상수 점수 블록이 정말로 필요합니까? 어쨌든 필터 블록을 사용하고 있으므로 득점은 중요하지 않습니다. – shiladitya
@AvihooMamka'field_a'는 숫자가 아닙니다. –