본문으로 건너뛰기

엘라스틱서치 기본사용

MUST / like / 완전일치 / 50이상 / 정렬

{
"query": {
"bool": {
"must": [
{
"wildcard": {
"field1": "*like 검색어*"
}
},
{
"wildcard": {
"field2": "*like 검색어*"
}
},
{
"term": {
"exact_field": "완전히 일치하는 값"
}
},
{
"range": {
"numeric_field": {
"gte": 50
}
}
}
]
}
},
"sort": [
{
"created_date": {
"order": "asc"
}
}
]
}

Should 하나라도 충족되면

{
"query": {
"bool": {
"should": [
{
"wildcard": {
"field1": "*검색어*"
}
},
{
"wildcard": {
"field2": "*검색어*"
}
},
{
"wildcard": {
"field3": "*검색어*"
}
}
]
}
}
}

인덱스 생성 및 삭제

PUT메서드 / DELETE메서드 http://localhost:9200/dbname

{
"mappings": {
"table": {
"discover":".*"}
}
}

기본검색

POST메서드로 검색 http://localhost:9200/dbname/tablename/_search

{
"query" : {
"query_string" : {
"query" : "*hey*"
}
}
}

Aggregation

집계의 가장 기본형. 여기서 group_by_category라는 것은 내가 정하는 임의 문자이다.
지정하고 싶은데로 지정하면 된다.

GET /my-index/_search
{
"size": 0,
"aggs": {
"group_by_category": {
"terms": {
"field": "category"
}
}
}
}

결과는 다음과 같이 반환된다. 버킷 안에 key가 두가지가 있고 각 Key들의 카운트 값이 반환된다.

{
"took": 1,
"timed_out": false,
"hits": {
"total": {
"value": 4,
"relation": "eq"
},
"hits": []
},
"aggregations": {
"group_by_category": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 1,
"buckets": [
{
"key": "Tutorials",
"doc_count": 3
},
{
"key": "Analysis",
"doc_count": 1
}
]
}
}
}