elasticsearch基本使用--《elasticsearch核心技术与实战》笔记(一)
2021/7/7 23:09:11
本文主要是介绍elasticsearch基本使用--《elasticsearch核心技术与实战》笔记(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
CAT查看elasticsearch索引的情况
- 查看索引信息
GET /_cat/indices/kibana_sample_data_flights?v&s=index
health | status | index | uuid | pri(主分片) | rep(副本数) | docs.count(文档总数) | docs.deleted | store.size(主分片的大小) | pri.store.size |
---|---|---|---|---|---|---|---|---|---|
green | open | kibana_sample_data_flights | Q6oQk43eSiW_hrP8rrCzpQ | 1 | 0 | 13059 | 0 | 6.2mb | 6.2mb |
- 查看节点
get _cat/nodes?v
- 查看索引信息
GET indexName
节点概念
- master-eligble和master
master-eligible node和 master node,每个节点启动后,默认就是一个Master eligible节点,可以设置node.master:false禁止。master-eligible节点可以参与选主流程,成为Master节点,当一个节点启动时候,它会将自己选举成Master节点。每个节点上都保存了集群的状态,只有Master节点才能修改集群的状态信息。集群状态维护了一个集群的必要信息,所有节点的信息,所有的索引和其相关的Mapping与Setting信息,分片路由信息。任意节点都能修改信息会导致数据的不一致。
- DataNode和Coordinating Node
DataNode负责保存分片数据,CoordinatingNode负责接受Client的请求,将请求分发到合适的节点,最终将结果汇集到一起,每个节点都起到了CoordinatingNode的作用。
文档CRUD
# create document,自动生成Id POST users/_doc { "user" : "Mike", "post_date" : "2019-04-15T14:12:12", "message" : "trying out Kibana" } #create document. 指定 ID 如果已经存在,就报错 PUT users/_create/1 { "user" : "Jack", "post_date" : "2019-05-15T14:12:12", "message" : "trying out Elasticsearch" } # delete document DELETE users/_doc/1 # update document, 整篇文档被删除又重新新增 PUT users/_doc/1 { "user" : "Mike" } #在原文档上增加字段 POST users/_update/1/ { "doc":{ "post_date" : "2019-05-15T14:12:12", "message" : "trying out Elasticsearch" } } # 查文档 GET users/_doc/1 # bulk操作 POST _bulk { "index" : { "_index" : "test", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "test", "_id" : "2" } } { "create" : { "_index" : "test2", "_id" : "3" } } { "field1" : "value3" } { "update" : {"_id" : "1", "_index" : "test"} } { "doc" : {"field2" : "value2"} } # 批量查询 GET /_mget { "docs" : [ { "_index" : "test", "_id" : "1" } ] } # 指定索引,批量查询 GET /test/_mget { "docs" : [ { "_id" : "1" }, { "_id" : "2" } ] }
倒排索引入门
- Analyzer的组成
- 使用分词器分析text
POST _analyze { "analyzer": "standard", "text": "Mastering Elasticsearch" } POST _analyze { "analyzer": "standard", "text": "Elasticsearch Server" } POST _analyze { "analyzer": "standard", "text": "Elasticsearch Essentials" }
Search API概览
- 指定查询的索引
URI查询
使用"q",指定查询字符串,“query string syntax”,KV键值对。
RequestBody
# 查询titile即出现last又出现christmas的文档 POST movies/_search { "query": { "match": { "title": { "query": "last christmas", "operator": "and" } } } } # 查询tile出现one love词语的文档,通过slop还可以指定两个次之间的距离 POST movies/_search { "query": { "match_phrase": { "title":{ "query": "one love" } } } }
Query String&Simple Query String
- query String
- Simple Query String Query
Dynamic Mapping和常见字段类型
- 字段的数据
- 能否更改Mapping的字段类型
显式Mapping设置与常见参数介绍
PUT movies { "mappings": { // define your mappings here } }
- 设置null_value,应用于需要对Null值实现搜索
多字段特性及配置自定义Analyzer
- 多字段类型,用于精确匹配及使用不同的analyzer
- exact Values VS Full Text
- Elasticsearch为每一个字段创建一个倒排索引,Exact Value在索引时,不需要做特殊的分词处理。
Index Template和Dynamic Template
- Index Template帮助设定Mapping和Settings,并按照一定的规则,自动匹配到新创建的索引上。
- dynamic Template设置elasticasearch自动识别字段类型的依据
Elasticsearch聚合分析
聚合的分类
- Bucket Aggregation,一些满足特定条件的文档的集合
- Metric Aggregation,一些数学运算,可以对文档字段进行统计分析
- Pipeline Aggreation,对其他的聚合结果进行二次聚合
- Martrix Aggration,支持多个字段的操作并提供一个结果矩阵
GET kibana_sample_data_flights/_search { "size": 0, "aggs":{ "flight_dest":{ "terms":{ "field":"DestCountry" // Bucket聚合 }, "aggs":{ "stats_price":{ //嵌套 Metric聚合 "stats":{ "field":"AvgTicketPrice" } }, "wather":{ "terms": { // Bucket嵌套Bucket "field": "DestWeather", "size": 5 } } } } } } // 结果集 {"aggregations" : { "flight_dest" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 745, "buckets" : [ { "key" : "IT", "doc_count" : 539, "wather" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 107, "buckets" : [ { "key" : "Sunny", "doc_count" : 105 }, { "key" : "Cloudy", "doc_count" : 99 }, { "key" : "Rain", "doc_count" : 97 }, { "key" : "Clear", "doc_count" : 85 }, { "key" : "Heavy Fog", "doc_count" : 46 } ] }, "stats_price" : { "count" : 539, "min" : 103.80162048339844, "max" : 1189.5384521484375, "avg" : 566.2765519349164, "sum" : 305223.0614929199 } } ] } } }
这篇关于elasticsearch基本使用--《elasticsearch核心技术与实战》笔记(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享