반응형
공통
인덱스 목록 조회
GET /_cat/indices?s=index
조회
전체 조회
SELECT * FROM test_index
GET /test_index/_search
{
"query" : {
"match_all": {}
}
}
데이터 수 조회
SELECT COUNT(*) FROM test_index
GET /test_index/_count
{
"query" : {
"match_all": {}
}
}
LIKE 조건 조회
SELECT *
FROM test_index
WHERE url LIKE '%/api/%'
GET /test_index/_search HTTP/1.1
Content-Type: application/json
{
"query": {
"query_string": {
"fields": [
"url"
],
"query": "*/api/*"
}
}
}
AND 조건 조회
SELECT *
FROM test_index
WHERE response_code = 200
AND (response_time >= 5 AND response_time < 10)
GET /test_index/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"response_code": 200
}
},
{
"range": {
"response_time": {
"gte": 5,
"lt": 10
}
}
}
]
}
}
}
NOT AND 조건 조회
SELECT *
FROM test_index
WHERE NOT response_code = 200
AND NOT (response_time >= 5 AND response_time < 10)
GET /test_index/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"response_code": 200
}
},
{
"range": {
"response_time": {
"gte": 5,
"lt": 10
}
}
}
]
}
}
}
데이터 N개만 조회
SELECT * FROM test_index LIMIT 10
GET /test_index/_search
{
"size": 10
}
특정 필드만 조회
SELECT response_code, response_time FROM test_index
GET /test_index/_search
{
"_source": ["response_code", "response_time"]
}
스크립트 처리된 필드 조회
SELECT CONCAT(method, ' ', url) as full_url FROM test_index
GET /test_index/_search
{
"script_fields": {
"full_url": {
"script": {
"source": "params._source.method + ' ' + params._source.url"
}
}
}
}
집계 조회
SELECT url, COUNT(*) as count
FROM test_index
GROUP BY url
ORDER BY count DESC
LIMIT 5
GET /test_index/_search
{
"size": 0,
"aggregations": {
"request_counts_per_url": {
"terms": {
"field": "url.keyword",
"size": 5,
"order": {
"_count": "desc"
}
}
}
}
}
스크립트 처리된 필드 집계 조회
SELECT full_url, COUNT(*) as count
FROM (
SELECT CONCAT(method, ' ', url) AS full_url
FROM test_index
)
GROUP BY full_url
ORDER BY count DESC
LIMIT 5
GET /test_index/_search
{
"size": 0,
"aggregations": {
"request_counts_per_url": {
"terms": {
"script": "params._source.method + ' ' + params._source.url",
"size": 5,
"order": {
"_count": "desc"
}
}
}
}
}
매핑 정보 변경하기 - reindex
설명
- 한 번 생성된 인덱스 매핑은 변경이 불가능함
- 변경될 매핑 정보를 갖는 인덱스를 추가로 만들고 reindex하는 방식으로 처리
- 따라서 처음 인덱스 생성시 매핑 정보 설계를 신중히해야함
인덱스 생성
PUT /test_index HTTP/1.1
Content-Type: application/json
{
"mappings": {
"properties": {
"response_code": {
"type": "integer"
}
}
}
}
데이터 추가
POST /test_index/_doc HTTP/1.1
Content-Type: application/json
{
"response_code": 200
}
변경할 매핑 정보를 갖는 새 인덱스 추가
PUT /test_index_dump HTTP/1.1
Content-Type: application/json
{
"mappings": {
"properties": {
"response_code": {
"type": "text"
}
}
}
}
reindex
POST /_reindex HTTP/1.1
Content-Type: application/json
{
"source": {
"index": "test_index"
},
"dest": {
"index": "test_index_dump"
}
}
참고
date type 다루기
인덱스 생성
PUT /test_index HTTP/1.1
Content-Type: application/json
{
"mappings": {
"properties": {
"access_time": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}
데이터 추가
POST /test_index/_doc HTTP/1.1
Content-Type: application/json
{
"access_time": "2020-02-15 11:00:00"
}
POST /test_index/_doc HTTP/1.1
Content-Type: application/json
{
"access_time": "2020-12-31 11:00:00"
}
데이터 조회
GET /test_index/_search HTTP/1.1
Content-Type: application/json
{
"query": {
"range": {
"access_time": {
"gte": "2020-12-31 11:00:00"
}
}
}
}
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "test_index",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"access_time": "2020-12-31 11:00:00"
}
}
]
}
}
object type 다루기
인덱스 생성
PUT /test_index HTTP/1.1
Content-Type: application/json
{
"mappings": {
"properties": {
"headers": {
"type": "object"
}
}
}
}
데이터 추가
POST /test_index/_doc HTTP/1.1
Content-Type: application/json
{
"headers": {
"referer": "localhost",
"cookie": "token=aaaaaa; fff=zzzz"
}
}
POST /test_index/_doc HTTP/1.1
Content-Type: application/json
{
"headers": {
"referer": "0.0.0.0"
}
}
데이터 조회
GET /test_index/_search HTTP/1.1
Content-Type: application/json
{
"query": {
"match": {
"headers.referer": "localhost"
}
}
}
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.6931471,
"hits": [
{
"_index": "test_index",
"_type": "_doc",
"_id": "1",
"_score": 0.6931471,
"_source": {
"headers": {
"referer": "localhost",
"cookie": "token=aaaaaa; fff=zzzz"
}
}
}
]
}
}
반응형
'Development > ELK' 카테고리의 다른 글
[Metricbeat] 설치 (1) | 2020.12.28 |
---|---|
[Elastalert] 설치 (0) | 2020.12.28 |
[Elasticsearch] 설정 (0) | 2019.03.17 |
[Filebeat] 설정 (0) | 2019.03.02 |
[Filebeat] 설치 (1) | 2019.03.01 |