ElasticSearch
- 下面简称 ES 数据库,是日志处理三剑客 ELK 中的 E,主攻数据存储和检索
- ES 数据库的特点是,支持非常复杂的文本搜索,应用场景是非格式化的文本数据,如日志
- 目前新生的数据库,influxDB, kafka,ElasticSearch,Etcd(Kubernetes)默认都是分布式数据库,也符合大数据处理的要求
- ElasticSearch 支持不同种类的 分词工具,相当于插件,能对不同语言进行解析
- ElasticSearch 的操作灵活,支持 Restful API 通过 HTTP 请求访问,连接和访问都非常方便,且针对不同编程语言,ES 提供了客户端包,无需手写Restful API
- ES 的重点是灵活的搜索数据,ES 基于更早出现的 lucene
全文检索
,但 lucene 需要非常多搜索理论的基础,使用起来非常困难
原理剖析
文本相似度
- 在自然语言中,搜索其实就是相似文本匹配
Lucene 语法
基础操作
1. 查看所有索引
http://192.168.1.100:9210/_cat/indices?v
所有索引信息
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .watches WJ04xpVmTqahsku9zD-GJQ 1 1 6 0 42kb 20.8kb
green open .monitoring-kibana-6-2020.07.20 Ct1UbZCfT_-OlwY2Z0WjsQ 1 1 14960 0 7.4mb 3.7mb
green open .watcher-history-9-2020.07.21 aLSM3p5gR0iYUnHhYecwQQ 1 1 744 0 2.1mb 1mb
green open .monitoring-es-6-2020.07.20 f1cHHZcbRQCpuSNdAbWQag 1 1 18647 0 20.1mb 9.9mb
green open .kibana_1 8YP0eScrTKK6CRIl51nzUA 1 1 4 1 39.9kb 19.9kb
green open province 3zj4TD2FSou_KYRktKeGYQ 5 1 1 0 12.9kb 6.4kb
green open .triggered_watches 16E_SUjiQ7i9cJMQBqQcLA 1 1 0 0 994.4kb 495.7kb
green open .watcher-history-9-2020.07.20 YUFRl8alTE6x0xZnDGqH1A 1 1 7488 0 20.8mb 10.4mb
green open .security-6 SEtWrWenSF2_SJNVItxxUQ 1 1 4 0 59.4kb 29.7kb
green open .monitoring-es-6-2020.07.21 qIxfl7UUTIa8_BlaZcbgBQ 1 1 2440 264 4.8mb 2.3mb
green open .kibana_task_manager S0zpseeETxCAtLog6bbySA 1 1 2 0 19.5kb 12.6kb
green open .monitoring-kibana-6-2020.07.21 TfRZ2o9xQ_WHOA1PAd22Vg 1 1 1490 0 876.9kb 431.9kb
http://192.168.1.100:9210/_cat/segments
更加详细的索引信息
index shard prirep ip segment generation docs.count docs.deleted size size.memory committed searchable version compound
.kibana_task_manager 0 p 172.21.0.12 _e 14 1 0 5.9kb 1932 true true 7.7.0 true
.kibana_task_manager 0 p 172.21.0.12 _f 15 1 0 6.3kb 1932 true true 7.7.0 true
.kibana_task_manager 0 r 172.21.0.5 _s 28 2 0 6.6kb 1932 true true 7.7.0 false
.triggered_watches 0 r 172.21.0.12 _0 0 2 0 2.9kb 670 false true 7.7.0 true
.watcher-history-9-2020.07.20 0 r 172.21.0.12 _12s 1396 7488 0 10.4mb 13603 true true 7.7.0 false
.watcher-history-9-2020.07.20 0 p 172.21.0.5 _131 1405 7488 0 10.4mb 13603 true true 7.7.0 false
.monitoring-kibana-6-2020.07.20 0 r 172.21.0.12 _24y 2770 14960 0 3.7mb 10535 true true 7.7.0 false
.monitoring-kibana-6-2020.07.20 0 p 172.21.0.5 _24x 2769 14960 0 3.7mb 10503 true true 7.7.0 false
province 3 p 172.21.0.12 _0 0 1 0 5.1kb 1358 true true 7.7.0 true
province 3 r 172.21.0.5 _0 0 1 0 5.1kb 1358 true true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _83 291 816 0 217.9kb 11114 false true 7.7.0 false
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8d 301 818 0 218.4kb 10810 false true 7.7.0 false
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8e 302 6 0 16.3kb 4719 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8f 303 6 0 16.3kb 4759 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8g 304 6 0 16kb 4663 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8h 305 6 0 16.2kb 4671 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8i 306 6 0 16kb 4687 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8j 307 6 0 16.3kb 4775 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 p 172.21.0.12 _8k 308 6 0 16.4kb 4823 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _83 291 811 0 215.5kb 9098 false true 7.7.0 false
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8d 301 817 0 217.9kb 10898 false true 7.7.0 false
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8e 302 6 0 16.3kb 4711 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8f 303 6 0 16.3kb 4719 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8g 304 6 0 16.3kb 4759 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8h 305 6 0 16kb 4663 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8i 306 6 0 16.2kb 4671 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8j 307 6 0 16kb 4687 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8k 308 6 0 16.3kb 4775 false true 7.7.0 true
.monitoring-kibana-6-2020.07.21 0 r 172.21.0.5 _8l 309 6 0 16.4kb 4823 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5l 201 383 0 553.5kb 7908 false true 7.7.0 false
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5v 211 403 0 580kb 7804 false true 7.7.0 false
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5w 212 6 0 27kb 7480 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5x 213 6 0 27kb 7463 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5y 214 6 0 27.1kb 7440 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _5z 215 6 0 26.9kb 7471 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _60 216 6 0 26.9kb 7440 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _61 217 6 0 27kb 7439 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _62 218 6 0 27.2kb 7439 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _63 219 6 0 26.9kb 7479 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 r 172.21.0.12 _64 220 6 0 26.9kb 7439 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5l 201 386 0 554.6kb 7940 false true 7.7.0 false
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5v 211 406 0 584kb 7956 false true 7.7.0 false
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5w 212 6 0 27kb 7463 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5x 213 6 0 27.1kb 7440 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5y 214 6 0 26.9kb 7471 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _5z 215 6 0 26.9kb 7440 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _60 216 6 0 27kb 7439 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _61 217 6 0 27.2kb 7439 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _62 218 6 0 26.9kb 7479 false true 7.7.0 true
.watcher-history-9-2020.07.21 0 p 172.21.0.5 _63 219 6 0 26.9kb 7439 false true 7.7.0 true
.monitoring-es-6-2020.07.20 0 p 172.21.0.12 _15o 1500 18647 0 9.9mb 24659 true true 7.7.0 false
.monitoring-es-6-2020.07.20 0 r 172.21.0.5 _xn 1211 16101 26 8.6mb 18511 true true 7.7.0 false
.monitoring-es-6-2020.07.20 0 r 172.21.0.5 _13h 1421 2546 0 1.5mb 44305 true true 7.7.0 false
.watches 0 p 172.21.0.12 _15k 1496 6 0 15kb 2257 false true 7.7.0 true
.watches 0 r 172.21.0.5 _154 1480 2 0 9.6kb 2023 false true 7.7.0 true
.watches 0 r 172.21.0.5 _155 1481 4 0 10.9kb 2249 false true 7.7.0 true
.kibana_1 0 r 172.21.0.12 _2 2 1 1 7.4kb 2165 true true 7.7.0 false
.kibana_1 0 r 172.21.0.12 _3 3 1 0 3.4kb 1121 true true 7.7.0 true
.kibana_1 0 r 172.21.0.12 _4 4 1 0 3.4kb 1121 true true 7.7.0 true
.kibana_1 0 r 172.21.0.12 _5 5 1 0 5.2kb 912 true true 7.7.0 true
.kibana_1 0 p 172.21.0.5 _2 2 1 1 7.4kb 2165 true true 7.7.0 false
.kibana_1 0 p 172.21.0.5 _3 3 1 0 3.4kb 1121 true true 7.7.0 true
.kibana_1 0 p 172.21.0.5 _4 4 1 0 3.4kb 1121 true true 7.7.0 true
.kibana_1 0 p 172.21.0.5 _5 5 1 0 5.2kb 912 true true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _5y 214 1265 32 1mb 69889 false true 7.7.0 false
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _68 224 1323 32 1mb 73149 false true 7.7.0 false
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _69 225 18 32 74.8kb 10159 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _6a 226 18 32 74.7kb 10095 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _6b 227 18 32 74.7kb 10023 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _6c 228 18 32 74.7kb 10023 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _6d 229 18 32 74.8kb 10151 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 r 172.21.0.12 _6e 230 50 0 74.8kb 10143 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6h 233 1283 32 1mb 70617 false true 7.7.0 false
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6r 243 1323 32 1mb 73037 false true 7.7.0 false
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6s 244 18 32 74.7kb 10095 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6t 245 18 32 74.7kb 10023 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6u 246 18 32 74.7kb 10023 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6v 247 18 32 74.8kb 10151 false true 7.7.0 true
.monitoring-es-6-2020.07.21 0 p 172.21.0.5 _6w 248 50 0 74.8kb 10143 false true 7.7.0 true
.security-6 0 r 172.21.0.12 _0 0 1 0 4.2kb 1706 true true 7.7.0 true
.security-6 0 r 172.21.0.12 _1 1 1 0 7.1kb 1751 true true 7.7.0 true
.security-6 0 r 172.21.0.12 _2 2 1 0 10.6kb 1755 true true 7.7.0 true
.security-6 0 r 172.21.0.12 _3 3 1 0 7.1kb 1751 true true 7.7.0 true
.security-6 0 p 172.21.0.5 _0 0 1 0 4.2kb 1706 true true 7.7.0 true
.security-6 0 p 172.21.0.5 _1 1 1 0 7.1kb 1751 true true 7.7.0 true
.security-6 0 p 172.21.0.5 _2 2 1 0 10.6kb 1755 true true 7.7.0 true
.security-6 0 p 172.21.0.5 _3 3 1 0 7.1kb 1751 true true 7.7.0 true
- 所有带点的都是一些自带的,或者组件索引,非
.
开头的是自己建的索引,如province
2. 查看集群中节点状态
https://1.1.1.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
1.1.1.1 45 98 5 0.10 0.21 0.15 mdi * 1595214621000238732
1.1.1.2 44 98 4 0.02 0.18 0.20 mdi - 1595214621000238632
3. 查看集群健康状态
https://1.1.1.1:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1595297453 02:10:53 es-q2lnf6va green 2 2 32 16 0 0 0 0 - 100.0%
4. 更多集群信息,请访问 官网 cat API
- 以下参考 文章
https://www.cnblogs.com/ixan/p/9903555.html
API | 作用 | 备注 |
---|---|---|
/_cat/allocation | 存储空间大小查看 | |
/_cat/shards | 数据分片 | |
/_cat/shards/{index} | 查看相应索引的分片信息 | |
/_cat/master | 查看集群的主节点 | |
/_cat/nodes | 查看集群的所有节点 | |
/_cat/indices | 查看所有索引信息 | |
/_cat/indices/{index} | 查看单个索引信息 | |
/_cat/segments | 更加详细的索引信息 | |
/_cat/segments/{index} | 查看单个索引的详细信息 | |
/_cat/count | 查看集群中所有文档的数量 | |
/_cat/count/{index} | 查看某个索引的所有文档的数量 | |
/_cat/recovery | https://www.elastic.co/guide/en/elasticsearch/reference/6.8/cat-recovery.html | |
/_cat/recovery/{index} | https://www.elastic.co/guide/en/elasticsearch/reference/6.8/cat-recovery.html | |
/_cat/health | 查看集群的健康状态 | |
/_cat/pending_tasks | ||
/_cat/aliases | ||
/_cat/aliases/{alias} | ||
/_cat/thread_pool | ||
/_cat/plugins | ||
/_cat/fielddata | ||
/_cat/fielddata/{fields} | ||
/_cat/nodeattrs | ||
/_cat/repositories | ||
/_cat/snapshots/{repository} |
创建文档
-
POST OR PUT
- 假设需要创建一个国家的索引(表)
- 国家下有省 (文档类型)
- 省有省的名字
-
创建 广东省
- PUT https://1.1.1.1:9200/country/province/guangdong
{
“area”: “179700 km^2”,
“population”: “115 million”,
“top GDP”: 1,
“province_name”: “广东”
} - POST 可以不指定 id (广东)
POST https://1.1.1.1:9200/country/province
{
“area”: “166900 km^2”,
“population”: “46 million”,
“top GDP”: 16,
“province_name”: “江西”
} - 查看下结果
GET https://1.1.1.1:9200/country/_search { "took": 0, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 2, "max_score": 1, "hits": [ { "_index": "country", "_type": "province", "_id": "guangdong", "_score": 1, "_source": { "area": "179700 km^2", "population": "115 million", "top GDP": 1, "province_name": "广东" } }, { "_index": "country", "_type": "province", "_id": "mFVRb3MBK4tR3M5Sm_Gc", "_score": 1, "_source": { "area": "166900 km^2", "population": "46 million", "top GDP": 16, "province_name": "江西" } } ] } }
- PUT https://1.1.1.1:9200/country/province/guangdong
-
删除文档
Delete https://1.1.1.1:9200/country/province/guangdong { "_index": "country", "_type": "province", "_id": "guangdong", "_version": 2, "result": "deleted", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
-
搜索文档
1. 用 GET 拼接字符在 URL中 2. 使用 body ,类似于 POST 传参
问题总结
- Elasticsearch 官网的例子 搜索 rock climbing ,搜索失败
- 出现原因,因为安装 ES 的时候默认将 string类型的存储格式 变为 keyword 的格式
- 而 keyword 是不进行分词的,需要将 keyword 改成 string,然后分词之后,将该字段进行索引
- 才能搜索到 rock climbing 和 rock albums
- 解决访问,设置string 的默认存储格式
PUT _template/stringDefault { "order": 10, "index_patterns": [ "*" ], "mappings": { "dynamic_templates": [ { "strings": { "match_mapping_type": "string", "mapping": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } } ] } }