# elasticsearch **Repository Path**: thousmile/elasticsearch ## Basic Information - **Project Name**: elasticsearch - **Description**: Elasticsearch 技术解析与实战 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2019-05-06 - **Last Updated**: 2022-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Elasticsearch技术解析与实战 ## 第一章 ``` # 当任何索引操作失败的时候,执行同步刷新,必要的时候可以执行多次 POST _flush/synced # 查看集群状态 green:健康, yellow:亚健康, red:出问题了 # green:每个索引的primary shard和replica shard都是active状态的 # yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态 # red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了 GET _cat/health GET _cat/health?v GET _cat/health?v&ts=false # 查看节点 GET _cat/nodes GET _cat/nodes?v # 提供一个视图关于索引分片 正在恢复或者已经完成恢复的相关信息 # 恢复事件操作可以发生在集群中一个索引分片从一个节点移动到另外一个节点上。 # 可以发生在快照恢复期间,一个replication层级的变化, # 节点失败,或者节点启动的时候。节点启动的恢复操作也叫本地存储恢复 #(当一个节点启动的时候分片从硬盘上被加载到) GET _cat/recovery GET _cat/recovery?v # 查看索引 GET _cat/indices GET _cat/indices?v ``` ## 第二章索引 ``` # 创建索引,并且指定分片,副本数量 PUT /secisland/ { "settings": { "number_of_replicas": 1 , "number_of_shards": 5 } } # 创建索引,并且指定分片,副本数量,并且配置mappings映射类型 PUT /secisland { "settings": { "number_of_replicas": 1 , "number_of_shards": 3 }, "mappings": { "_doc":{ "properties": { "logId":{ "type": "long" }, "message":{ "type": "text" }, "lng": { "type": "float" }, "createTime":{ "type": "date" } } } } } # 查看索引详细信息 GET /secisland # 查看索引中的数据 GET /secisland/_doc/_search { "query": { "match_all": {} } } # 关闭索引 POST /secisland/_close # 开启索引 POST /secisland/_open # 增加索引映射 PUT /secisland/_mapping/_doc { "properties": { "className": { "type": "text" } } } # 获取指定索引映射 GET /secisland/_mapping # 获取所有索引映射 GET /_all/_mapping # 获取指定索引,的字段映射 GET /secisland/_mapping/_doc/field/createTime #给索引添加别名 POST /_aliases { "actions": [ { "add": { "index": "secisland", "alias": "secisland111" } } ] } #给索引删除别名 POST /_aliases { "actions": [ { "remove": { "index": "secisland", "alias": "secisland111" } } ] } #给索引修改别名,只能先删除,然后修改 POST /_aliases { "actions": [ { "remove": { "index": "secisland", "alias": "secisland111" } }, { "add": { "index": "secisland", "alias": "secisland222" } } ] } # 一个别名关联多个索引 POST /_aliases { "actions": [ { "add": { "index": "secisland111", "alias": "test" } }, { "add": { "index": "secisland222", "alias": "test" } } ] } POST /_aliases { "actions": [ { "add": { "index": ["secisland111","secisland222"], "alias": "test" } } ] } # 修改 单个 索引 PUT /secisland/_settings { "number_of_replicas": 1 , "number_of_shards": 5 } # 修改 全部 索引 PUT /_settings { "number_of_replicas": 1 , "number_of_shards": 5 } # 获取 某个索引 的配置 GET /secisland/_settings GET /*/_settings GET /_all/_settings GET /.kibana,secisland/_settings # ---------- 分词器 ---------- # 测试分词器 POST /_analyze { "analyzer": "standard" , "text": "this is a test" } # 自定义分词器 POST /_analyze { "tokenizer": "keyword", "filter": ["lowercase"], "char_filter": ["html_strip"], "text": ["This is A test "] } # 指定索引进行分词 POST /secisland/_analyze { "tokenizer": "standard", "char_filter": ["html_strip"], "filter": ["snowball"], "explain": true, "text": ["detailed output"], "attributes": ["keyword"] } # ---------- 索引模板 ---------- # 创建索引模板 PUT /_template/template_1 { "template" : "te*", "order" : 0, "settings" : { "number_of_shards" : 1 }, "mappings" : { "type1" : { "_source" : { "enabled" : false } } } } # 删除索引模板 DELETE /_template/template_1 # 获取索引模板 GET /_template GET /_template/template_1 GET /_template/temp* GET /_template/template_1,template_1 # 判断索引模板是否存在 HEAD /_template/template_1 # ---------- 重建索引 ---------- POST /_reindex { "source": {"index": "secisland"}, "dest": {"index": "new_secisland"} } # ---------- 索引监控 -------------- # 获取所有聚合以及索引的统计数据 GET /_stats # 获取指定索引的统计数据 GET /.kibana,secisland/_stats # 指定返回的统计数据 GET /.kibana,secisland/_stats/docs,store # ---------- 索引分片 ---------- # 查询索引分片信息 GET /secisland/_segments GET /secisland1,secisland2/_segments GET /_segments # ---------- 索引恢复 ---------- GET /secisland/_recovery # detailed : 显示详细视图,默认false # active_only : 显示正在恢复的,默认false GET /_recovery?pretty&human&detailed=true # ---------- 索引分片存储 ---------- GET /secisland/_shard_stores GET /.kibana,secisland/_shard_stores GET /_shard_stores?status=green # 清除索引缓存 POST /secisland/_cache/clear # 索引刷新 POST /secisland/_refresh POST /secisland,.kibana/_refresh POST /_refresh # 索引冲洗 POST /secisland/_flush # 合并索引 POST /secisland1,secisland2/_forcemerge POST /_forcemerge #---------------- 文档管理 --------------------- # 新增文档 PUT /secisland/_doc/1 { "collect_type":"sys_log", "collect_date":"2016-01-11", "message":"The iis Filebeat module parses access and error " } # 更新时,如果版本号不一致,则更新失败 PUT /secisland/_doc/1?version=2&pretty { "message":"logs created by the IIS HTTP server. Learn more. " } # 强制命令执行创建操作,数据存在则报错。 # 不写此参数,数据存在则修改。 PUT /secisland/_doc/1?op_type=create&pretty { "collect_type":"sys_log", "collect_date":"2016-01-11", "message":"The iis Filebeat module parses access and error " } # 更新删除文档 PUT /secisland/_doc/2 { "collect_type":"sys_log2", "collect_date":"2022-02-22", "message":"Incorrect HTTP method for uri [/secisland/_doc/1/_update?pretty] and method [PUT], allowed: " } # 删除文档 DELETE /secisland/_doc/1 # 查询文档 GET /secisland/_doc/1 # 排除_source属性 GET /secisland/_doc/1?_source=false # 排除_source中某个属性 GET /secisland/_doc/1?_source_exclude=message # 只获取_source属性 GET /secisland/_doc/1/_source # 分片选择 GET /secisland/_doc/1?routing=secisland # 多文档查询 POST /_mget { "docs":[ {"_index":"secisland","_type":"_doc","_id":"1"}, {"_index":"secisland","_type":"_doc","_id":"2"} ] } POST /secisland/_doc/_mget { "docs":[ {"_id":"1"}, {"_id":"2"} ] } POST /secisland/_doc/_mget { "docs":[ {"_id":"1","_source":false }, {"_id":"2"} ] } POST /secisland/_doc/_mget { "ids":["1","2"] } # 查询更新接口 POST /secisland/_update_by_query?conflicts=proceed # 任务接口获取动态 GET /_tasks?pretty&detailed=true&actions=byquery ```