Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

知识为进步之母,而进步又为富强之源泉。这篇文章主要讲述Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令相关的知识,希望能为你提供帮助。
前言 服务器:CentOS-6.7
运行系统:windows10
JDK版本:1.8
Elasticsearch版本:5.6.6
插件:kibana、elasticsearch-head
工具:postman
一、集群 查看集群是否健康

GET /_cluster/health

二、节点 查看节点列表 【Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令】后面加了 ?v 可以把表头给显示出来
GET /_cat/nodes?v

Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片

三、索引 1 查询索引 1.1 查询所有索引
GET /_cat/indices?v

1.2 查询单个索引的映射
GET /test_index/_mapping

2. 添加一个索引(通过mapping)
PUT /people { "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "man": { "dynamic": "strict", "properties": { "name": { "type": "text" }, "age": { "type": "integer" }, "birthday": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "address":{ "dynamic": "true", "type": "object" } } } } }

"dynamic": "strict"表示如果遇到陌生field会报错
"dynamic": "true"表示如果遇到陌生字段,就进行dynamic mapping
"dynamic": "false"表示如果遇到陌生字段,就忽略
3. 删除索引 3.1 删除一个索引
DELETE /people

3.2 删除多个索引
DELETE /index_one,index_two

4. 添加字段映射
PUT /people/_mapping/man { "properties": { "tags":{ "type": "text" } } }

5. 索引的别名
5.1 创建索引的别名
PUT /test_index/_alias/test

5.2 查询索引的别名
GET /test_index/_alias/*

5.3 查询别名指向哪一个索引
GET /*/_alias/test

四、文档 1. 增加文档 1.1 自定义ID
可以自动创建索引、类型,自己定义一个id
PUT /people/man/1 { "name": "叶良辰", "country": "china", "age": 25, "birthday": "1993-01-01", "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你呆不下去!与赵日天是好基友,两个人风风火火闯九州" }

1.2 随机生成ID
可以自动创建索引、类型,自动创建一个id
POST /people/man { "name": "叶良辰", "country": "china", "age": 25, "birthday": "1993-01-01", "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你待不下去!与赵日天是好基友,两个人风风火火闯九州" }

2. 修改文档 2.1全文修改
全文修改使用的是PUT命令,把所有字段都带上
PUT /people/man/1 { "name": "叶良辰", "country": "china", "age": 25, "birthday": "1993-01-01", "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你呆不下去!与赵日天是好基友,两个人风风火火闯九州" }

2.2部分修改(partial update)
使用POST命令,里面使用doc修改某个字段值
POST /people/man/1/_update { "doc": { "name": "zhangsan" } }

2.3 通过脚本直接修改
POST /people/man/1/_update { "script": "ctx._source.age += 10" }

或者
POST /people/man/1/_update { "script": { "lang": "painless", "source": "ctx._source.age += 10" } }

2.4 通过脚本的参数方式
POST /people/man/1/_update { "script": { "lang": "painless", "source": "ctx._source.age = params.age", "params": { "age": 100 } } }

2.5 通过groovy脚本文件方式
首先在%ES_HOME%/config/scripts文件夹下面新建一个groovy文件,取名add-age.groovy
Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片

编辑文件,添加下列内容
ctx._source.age += param.num
执行下面的命令
POST /people/man/1/_update { "script": { "lang": "groovy", "file": "add-age", "params": { "num": 15 } } }

2.6 文档不存在时的修改(upsert)
在修改document的时候,如果该文档不存在,则使用upsert操作进行初始化
POST people/man/1/_update { "script": "ctx._source.age += 10", "upsert": { "age": 20 } }

虽然用了+=,但是,上面的结果却是20,因为文档不存在,只是进行了初始化!
3. 删除文档 3.1 删除单个文档
DELETE /people/man/1

3.2 删除type下的所有文档
POST /people/man/_delete_by_query?conflicts=proceed { "query": { "match_all": {} } }

4.查询文档 下面列举一些简单的查询,更高级的查询在第五部分做介绍
4.1 查询单个文档
GET /people/man/2

4.2 使用_mget批量查询文档
GET /_mget { "docs": [ { "_index": "people", "_type": "man", "_id": 1 }, { "_index": "people", "_type": "man", "_id": 2 } ] }

index和type相同的时候,可以合并到一起:
GET /people/man/_mget { "docs": [ { "_id": 1 }, { "_id": 2 } ] }

4.3 查询所有文档
方式一(简单查询): GET /people/_search

方式二: POST /people/_search { "query": { "match_all": {} } }

4.4 查询出某些字段内容
后面跟了 ?_source=field1,field2
GET people/man/_search?_source=name,country { "query": { "match": { "age": "25" } } }

4.5 查询多个索引下的多个type
GET /index1,index2/type1,type2/_search

查询所有索引下的部分type
GET /_all/type1,type2/_search

4.6 模糊查询(全文搜索)
注意:下面的“叶良辰”会被拆分成:叶、良、辰,只要name里面包含这三个字的任意一个,都会被查询到!
另外,中英文搜索会不一样,中文是以一个汉字为单位,
英文默认以一个单词为单位进行拆分
POST /people/_search { "query": { "match": { "name": "叶良辰" } }, "sort": [ { "birthday": { "order": "desc" } } ] }

Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片

4.7 全文搜索的精准度
4.7.1 搜索结果中必须包括run、jump两种爱好
GET people/_search { "query": { "match": { "hobby": { "query": "run jump", "operator": "and" } } } }

4.7.2 使用百分比,搜索结果中必须包括6个爱好中的一半,也就是3个
GET people/_search { "query": { "match": { "hobby": { "query": "run jump basketball football piano pingpang", "minimum_should_match": "50%" } } } }

4.7.3 使用数量,搜索结果中必须包括3个爱好
GET people/_search { "query": { "bool": { "should": [ {"match": { "hobby": "basketball" }}, {"match": { "hobby": "pingpang" }}, {"match": { "hobby": "piano" }}, {"match": { "hobby": "run" }} ], "minimum_should_match": 3 } } }

Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片

五、高级查询 由于内容比较多,篇幅比较大,这里把文章分为两部分,本文是简单的增删改查
比较复杂的查询请参考:点击打开链接
OK,GAME OVER! 更多内容,请关注公众号:程序员高手之路
在公众号回复:es基础即可免费获取elasticsearch视频教程(未加密)!
Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片
Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令

文章图片


    推荐阅读