Elastic 과 관련해서는 조회할 일이 생각보다 많습니다.
조회쿼리가 단순하지만, 막상 쓸려고 하면 기억이 안나는 경우가 많아 기본적인걸 정리합니다.
* @가 붙은것은 변수입니다.
GET @index/_search
{
"size":100,
"query": {
"bool": {
"must": [
{ "match": { "@fildname": "@name" }},
{ "exists": { "field": "@name" }},
{ "range": { "@time": { "gte": "now-2m" }}}
]
}
},
"sort": [
{ "@time": { "order": "desc" } }
]
}
1. Should vs Must
Elastic은 모든 용어가 직관적입니다. bool 은 boolean 즉, true/false를 뜻함으로 true인 조건들을 안에 나열해놓았습니다.
그 중에서도 Should 와 Must는 or 과 and 로 생각하시면 편하겠습니다.
Should : 하나만 존재해도 true - OR
Must : 모두다 존재해야 true - AND
2. Term vs Match
아주 간단하게 설명하자면, Term은 equals 비교 Match는 like 비교라고 생각해도되겠다. 하지만 Term으로 비교하기 위해서 기본 doc구조자체가 keyword형태로 되어있어야한다.
Term : datatype - Keyword , == 비교
Match : 비슷하기만 하면 됨. (minimum_should_match로 match 갯수 조절가능)
* Reference : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html