最近开始学习 Elasticsearch
参考文档 Quick start 写作了本文。
docker network create elastic
docker run -d --name es01 --network elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.13.4
docker run -d --name kib01 --network elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01:9200" kibana:7.13.4
curl
命令curl -X GET http://localhost:9200
POST logs-my_app-default/_doc
{
"@timestamp": "2099-05-06T16:21:15.000Z",
"event": {
"original": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
}
}
以下有一些 Elasticsearch 中容易混淆的概念的简单解释。
logs-my_app-default
索引(名词):类似关系数据库中的一个 数据库 。_doc
类型名称,从 es6 之后一个索引只支持一个类型,默认的类型名称就叫 _doc
批量添加数据需要使用到 _bluk
端点,批量数据每行必须以换行符(\n)结束,包括最后一行。
PUT logs-my_app-default/_bulk
{ "create": { } }
{ "@timestamp": "2099-05-07T16:24:32.000Z", "event": { "original": "192.0.2.242 - - [07/May/2020:16:24:32 -0500] \"GET /images/hm_nbg.jpg HTTP/1.0\" 304 0" } }
{ "create": { } }
{ "@timestamp": "2099-05-08T16:25:42.000Z", "event": { "original": "192.0.2.255 - - [08/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" } }
@timestamp
字端排序GET logs-my_app-default/_search
{
"query": {
"match_all": { }
},
"sort": [
{
"@timestamp": "desc"
}
]
}
_source
的控制可以精准查询指定字段...
"fields": [
"@timestamp"
],
"_source": false,
...
...
"query": {
"range": {
"@timestamp": {
"gte": "2099-05-05",
"lt": "2099-05-08"
}
}
},
...
...
"runtime_mappings": {
"source.ip": {
"type": "ip",
"script": """
String sourceip=grok(‘%{IPORHOST:sourceip} .*‘).extract(doc[ "event.original" ].value)?.sourceip;
if (sourceip != null) emit(sourceip);
"""
}
},
"fields": [
"@timestamp",
"source.ip"
],
...
bool
来完成组合查询...
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "2099-05-05",
"lt": "2099-05-08"
}
}
},
{
"range": {
"source.ip": {
"gte": "192.0.2.0",
"lte": "192.0.2.240"
}
}
}
]
}
},
...
aggs
来完成聚合查询...
"aggs": {
"average_response_size":{
"avg": {
"field": "http.response.body.bytes"
}
}
},
"fields": [
"@timestamp",
"http.response.body.bytes"
],
...
DELETE _data_stream/logs-my_app-default
原文:https://www.cnblogs.com/zuojl/p/15073108.html