숫자/날짜 데이터의 경우 범위 기반으로 검색을 수행한다

# 아래는 그냥 예시..
POST log-2020-01-01/_search
{
"query": {
"range": {
"timestamp": {
"gte": "2020-01-01 00:45",
"lte": "2020-01-01 00:50"
}
}
}
}
엘라스틱서치는 검색 시 기본적으로 OR 연산으로 동작한다. 정확도를 높혀야할 경우 AND 연산이 필요할수 있는데 이럴 경우 operator 필드로 제어한다.
예를들어 아래 쿼리에서 operator를 지정하지 않았더라면 or 연산으로 작동하여 "ERROR", "exception" 둥중 하나가 포함되어있어도 검색결과로 나오지만, and 연산으로 하였기 때문에 두 단어가 모두 존재하여야 매칭된다.
POST log-2020-01-01/_search
{
"query": {
"match": {
"message": {
"query": "ERROR exception",
"operator": "and"
}
}
}
}
최소 몇개이상 매칭되어야 하는지 옵션으로 지정할 수 있다. 아래와 같이 하면 최소 2개이상 매칭되어야 검색결과로 나온다.
OR 연산 매칭되어야하는 최소한의 개수를 지정하기 때문에 부분적인 AND 연산과 비슷한 효과를 낼 수 있다.
POST log-2020-01-01/_search
{
"query": {
"match": {
"message": {
"query": "ERROR exception failed",
"minimum_should_match": 2
}
}
}
}