Elasticsearch 명령어 모음
작업할때 빠르게 명령어를 찾을려고 정리해 놓습니다.
Index
모든 Index 확인
GET _cat/indices?v
Index 구조
GET [인덱스]
# pretty 사용하면 들여쓰기를 보기편하게 해준다 #
GET [인덱스]?pretty
Index 생성
PUT [인덱스]
Index 삭제
DELETE [인덱스]
Index 내 Document 개수
GET [인덱스]/_count
Index 열기
POST [인덱스]/_open
Index 닫기
POST [인덱스]/_close
Index 검색
전체 검색
GET [인덱스]/_search
{
"query": {
"match_all": {}
}
}
# 콤마를 사용하여 Index 여러개를 동시에 검색 가능 #
GET [인덱스 1],[인덱스 2]/_search
{
"query": {
"match_all": {}
}
}
# 와일드카드 사용가능 #
GET */_search
{
"query": {
"match_all": {}
}
}
GET test*/_search
{
"query": {
"match_all": {}
}
}
단일 검색
# 풀 텍스트 검색 #
GET [인덱스]/_search
{
"query":{
"match":{
"필드":"값"
}
}
}
# 정확하게 일치하는 텍스트만 검색 #
GET [인덱스]/_search
{
"query": {
"term": {
"필드": "값"
}
}
}
기본적인 다중 검색
# 모든 조건이 일치 (검색 스코어 계산 O) #
GET [인덱스]/_search
{
"query": {
"bool": {
"must": [
{ "match": { "필드":"값" } },
{ "match": { "필드":"값" } }
]
}
}
}
# 조건중 하나이상 일치 (검색 스코어 계산 X) #
GET [인덱스]/_search
{
"query": {
"bool": {
"filter": [
{ "match": { "필드":"값" } },
{ "match": { "필드":"값" } }
]
}
}
}
# 모든 조건이 일치하지 않음 #
GET [인덱스]/_search
{
"query": {
"bool": {
"must_not": [
{ "match": { "필드":"값" } },
{ "match": { "필드":"값" } }
]
}
}
}
# 조건중 하나이상 일치 #
GET [인덱스]/_search
{
"query": {
"bool": {
"should": [
{ "match": { "필드":"값" } },
{ "match": { "필드":"값" } }
]
}
}
}
# 배열중 하나이상 일치 #
GET [인덱스]/_search
{
"query": {
"terms": {
"필드": ["값 1","값 2","값 3"]
}
}
}
# 값1과 값2 사이 3자리 검색어 포함 검색 #
GET [인덱스]/_search
{
"query": {
"match_phrase": {
"필드": {
"query": "값1 값2",
"slop": 3
}
}
}
}
# 값1과 값2 사이 3자리 검색어 포함 검색 #
GET [인덱스]/_search
{
"query": {
"range": {
"필드": {
"gte": "크거나 같은 값",
"gt": "큰 값",
"lte": "작거나 같은 값",
"lt": "작은 값"
}
}
}
}
복합적인 다중 검색
# 특정 범위의 A or B
GET [인덱스]/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"필드": {
"gte": "크거나 같은 값",
"gt": "큰 값",
"lte": "작거나 같은 값",
"lt": "작은 값"
}
}
},
{
"bool":{
"should": [
{ "match": { "필드": "A값" } },
{ "match": { "필드": "B값" } }
]
}
}
]
}
}
}
# (A and B) or (C and D) #
GET [인덱스]/_search
{
"query": {
"bool": {
"should": [
{ "bool": {
"must":[
{ "match": { "필드": "A 값" } },
{ "match": { "필드": "B 값" } }
]
}
},
{ "bool": {
"must":[
{ "match": { "필드": "C 값" } },
{ "match": { "필드": "D 값" } }
]
}
}
]
}
}
}
# (A or B) and (C or D) #
GET [인덱스]/_search
{
"query": {
"bool": {
"must": [
{ "terms": {
"필드": ["A 값","B 값"]
}
},
{ "terms": {
"필드": ["C 값", "D 값"]
}
}
]
}
}
}
검색 결과 가공
# 결과 개수 0페이지, 100개 #
GET [인덱스]/_search
{
"query":{
"match_all":{}
},
"from" : 0,
"size" : 100,
}
# 결과 정렬 desc 내림차순, asc 오름차순 #
GET [인덱스]/_search
{
"query":{
"match_all":{}
},
"sort" : [
{ "필드" : "desc" },
{ "필드" : "asc" }
]
}
# 집계 #
GET [인덱스]/_search
{
"query":{
"match_all":{}
},
"aggs":{
"평균 임의필드": {
"avg": {"field": "집계필드"}
},
"최솟값 임의필드": {
"min": {"field": "집계필드"}
},
"최댓값 임의필드": {
"max": {"field": "집계필드"}
},
"전체합계 임의필드": {
"sum": {"field": "집계필드"}
},
"백분윗값 임의필드": {
"percetiles": {"field": "집계필드"}
},
"avg,min,max,sum,count 값 임의필드": {
"stats": {"field": "집계필드"}
},
"유니크값 임의필드": {
"cardinality": {"field": "집계필드"}
},
"필드 내부위치 정보의 중심점 임의필드": {
"geo-centroid": {"field": "집계필드"}
}
}
}
# 집계 데이터에서 다시 집계 #
GET [인덱스]/_search
{
"query":{
"match_all":{}
},
"aggs": {
"임의필드": {
"cardinality": { "field": "집계필드" }
},
"aggs": {
"임의필드": {
"min": { "field": "집계필드" }
}
}
}
}
마무리
잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!
728x90
반응형
'프로그래밍 > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 시계열 데이터 일정 간격 집계 (0) | 2024.03.26 |
---|