티스토리 뷰
1. 설치
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0
버전확인
GET /
2. CRUD
http://<호스트>:<포트>/<인덱스>/_doc/<도큐먼트 id>
1) 상태 확인
#index 조회
GET /_cat/indices?v
#상태확인
GET /_cat/health?v
2) 삽입
PUT /movie/_doc/1
{
"msg" : "Hello Elasticsearch!"
}
3) 조회
# 단일검색
GET /movie/_doc/1
# 모든 문서 검색
GET /movie/_search
# 조건 검색
GET /movie/_search?q=hello
GET /movie/_search?q=hello OR hi
3) 삭제
#index 삭제
DELETE /movie
#doc 삭제(_id). DELETE /INDEX/TYPE/_id
DELETE /movie/_doc/4
#doc 삭제(쿼리). POST /INDEX/_delete_by_query
DELETE /movie/_delete_by_query
{
"query" : {
"match" : {
"msg" : "hello"
}
}
}
3. 집계 함수
1) group by
GET gw-heartbeat/_search
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gt": "2023-01-19T00:00:00.000Z",
"lt": "2023-01-20T00:00:00.000Z"
}
}
}
]
}
},
"aggs": {
"count": {
"terms": {
"field": "url.domain",
"size" : 1000
}
}
}
}
2) group by (필드 2개 이상)
GET gw-heartbeat/_search
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gt": "2023-01-19T00:00:00.000Z",
"lt": "2023-01-20T00:00:00.000Z"
}
}
}
]
}
},
"aggs": {
"myName": {
"multi_terms" : {
"terms" : [
{"field": "url.domain"},
{"field": "monitor.ip"}
],
"size" : 1000
}
}
}
}
4. 예제
AND 조건, Timezone
{
"track_total_hits": true,
"query": {
"bool": {
"filter": [
{
"match": {
"tags": "GRHQ"
}
},
{
"match": {
"tags": "MO"
}
},
{
"range": {
"@timestamp": {
"gte": "2023-05-01T00:00:00.000",
"lte": "2023-05-25T00:00:00.000",
"time_zone": "Asia/Seoul"
}
}
}
]
}
},
"aggs": {
"avg": {
"avg": {
"field": "time_taken"
}
}
}
}
- 전체 범위 검색을 하려면 "track_total_hits": true 작성해야 함
- 불필요한 데이터가 많이 보일 때는 ?size=0 적용
- Timezone 적용할 때, 2023-05-21T00:00:00.000Z 이런식으로 뒤에 Z가 붙으면 적용이 안됨
- 카운트를 계산할 때는 집계 보다는 /_count가 간단함. => discover에서 작성하는게 더 빠를 듯
- avg 추출 했더니, 결과에 count도 함께 나온다.
OR 조건
GET gw-http-accesslog/_count
{
"query": {
"bool": {
"filter": [
{
"bool": {
"should": [
{
"match": {
"tags": "GRHQ"
}
},
{
"match": {
"tags": "MO"
}
}
]
}
},
{
"range": {
"@timestamp": {
"gte": "2023-05-24T20:00:00.000",
"lte": "2023-05-24T20:00:00.001",
"time_zone": "Asia/Seoul"
}
}
}
]
}
}
}
https://coralogix.com/blog/42-elasticsearch-query-examples-hands-on-tutorial/
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 젠킨스
- Independentsoft
- 안드로이드
- elasticsearch
- 암호
- PoolingHttpClientConnectionManager
- 스머핑
- setDoInput
- 빌드 세팅
- 정렬
- call back
- sort
- react-native
- Stack
- springboot
- 선 없이
- 그라파나
- insertion
- array
- code push
- Windows 서비스 등록
- 443
- 개발 설정
- Gradle
- docker
- Queue
- 과거 버전 사용
- java
- 링크드리스트
- LinkedList
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함