ES包含了 数据的整合 => 提取 => 存储 => 使用
beats:从各种不同类型的文件/应用来采集数据。
logstash:从多个采集器或数据源来抽取/转换数据,向ES输送。
elasticSeach:存储,查询数据。
kibana:可视化ES的数据。
调用方式
1)restful api 调用 (http请求)
Get请求:http://localhost:9200/
curl可以模拟发送请求: curl -X GET"localhost:9200/?pretty"
ES的启动端接口 :
1>. 9200:给外部用户(给客户端调用)的端口 。
2>. 9300:给ES集群内部通讯的(外部调用不了的)。
2) kibana devtools:
可以自由地对ES进行操作(本质也是 restful api)。
devtools(不建议成产环境使用)
3) 客户端调用
Java客户端、Go客户端
Breaking changes policy | Elasticsearch Java API Client [7.17] | Elastic
启动:
启动elasticsearch在文件夹bin目录下cmd,输入elasticsearch.bat
启动kibana在文件夹bin目录下cmd,输入kibana
ES的语法
<1> DSL
josn格式,应用最广泛,最兼容http请求
建表插入,数据
POST post/_doc
{
"title" : "光嘎个",
"desc":"嘎嘎嘎嘎嘎嘎"
}
查询
DSL语法文档:Query and filter context | Elasticsearch Guide [7.17] | Elastic
GET post/_search
{
"query": {
"match_all": { }
},
"sort": [
{
"@timestamp": "desc"
}
]
}
根据id查询
GET post/_doc/bmhcG40BBQjGk2OOM-sp
修改
POST post/_doc/bmhcG40BBQjGk2OOM-sp
{
"title" : "光嘎个222",
"desc":"嘎嘎嘎嘎嘎嘎222"
}
删除
DELETE _data_stream/logs-my_app-default
<2> EQL
专门查询ECS文档(标准指标字段)的数据的语法,更加规范。
EQL search | Elasticsearch Guide [7.17] | Elastic
POST my_event/_doc
{
"title":"奥特aaaa光",
"@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"
}
}
GET /my_event/_eql/search
{
"query": """
any where 1 == 1
"""
}
<3> SQL
学习成本低,可能需要额外插件支持、性能较差。
SQL | Elasticsearch Guide [7.17] | Elastic
POST /_sql?format=txt
{
"query": "SELECT * FROM post WHERE title like '%光%'"
}
<4> Painless Scripting Language
编程的方式取值,更灵活,但是学习成本高。
Mapping
Mapping表结构:
自动生成Mapping,手动生成Mapping。
理解为数据库的表结构,有哪些字段,字段类型。
ES支持动态mapping,表结构可以动态改变,而不像MySQL一样必须手动建表,没有的字段就不能插入。
显示创建Mapping
PUT user
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
GET user/_mapping
分词器
分词的一种规则
空格分词器:withespace,结果:The quick brown fox
POST _analyze
{
"analyzer": "whitespace",
"text": "The quick brown fox."
}
关键词分词器:就是不分词,整句话当做专业术语
POST _analyze
{
"analyzer": "keyword",
"text": "The quick brown fox."
}
IK分词器:(ES插件)
对中文比较友好,
下载版本与ES必须一致
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
自定义词典可以让ik按自己的想法分词。
ik_smart和ik_max_word的区别?“小黑子”
ik_smart是只能分词,尽量选择最像一个词的拆分方式。
ik_max_word尽可能地分词,可以包括组合词,比如“小黑”,“黑子”。