elasticsearch 쿼리의 성능을 향상 시키려고합니다. 쿼리의 목표는 쿼리와 일치하는 문서를 검색하는 것이므로 점수가 중요하지 않으며 하루에 인덱스가 있다는 점도 중요합니다. 지금까지 내가 아는 한, 득점 계산을 피하면서 필터를 사용하는 것이 더 낫다.하지만 모든 문서 스코어 1을 검색하는 finter 내부 쿼리를 사용하는 대안이있다. 그래서 첫 번째 쿼리는 followig : 필터, 쿼리 또는 둘 모두를 사용하여 elasticsearch 쿼리를 최적화하십시오.
{
"filter": {
"bool": {
"must": [{
"match": {
"from": "[email protected]"
}
}, {
"range": {
"receivedDate": {
"gte": "date1",
"lte": "date2"
}
}
}
]
}
}
}
는 그럼 난 내 첫 번째 테스트를했고 나는 "쿼리"를위한 "필터"로 변경 내가 "쿼리"다음 "필터"를 사용하여 더 나은 시간을 얻을 때, 즉, 왜 내 첫 번째 질문의 대부분? 쿼리보다 느린 필터를 사용하려면 어떻게해야합니까?
나는 그것을 개선하기 위해 노력하고 계속 읽어보다 후 나는이있어 : 내가 인상이 조금 개선되었습니다이 후자
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"bool": {
"must": [{
"match": {
"from": "[email protected]"
}
}, {
"range": {
"receivedDate": {
"gte": "date1",
"lte": "date2"
}
}
}
]
}
}
}
}
}
. 그래서 당신의 경험에 따라 더 빠른 결과를 얻기 위해서는 어떤 것이 더 나은지 (적어도 이론적으로) 말해 줄 수 있습니까? 또한이 쿼리 중 하나를 사용하면 결과를 캐시하여 앞으로의 쿼리를 개선 할 가능성이 있습니다. 이 쿼리를 만드는 더 좋은 방법이 있습니까? 귀하의 도움에 미리 감사드립니다. 나는 Elasticsearch v2.3을 사용하고 있음을 잊어 버렸습니다.
은'from' 필드의 매핑은 무엇입니까? – Val
필드가 분석되지 않았기 때문에 나는 또한 변화 성냥 문장을 테스트 중이라는 것을 잊었습니다. 그래서 필드에서 문자열 not_analyzed이며 receivedDate 날짜입니다 – Joseratts