ElasticSearch - Kibana
一、全局操作
查看集群情况
GET /_cat/nodes/?v
查看集群健康度
GET /_cat/health/?v
查看集群分片情况
GET /_cat/shards/user
二、对索引的操作
查询各个索引状态
GET /_cat/indices/?v
创建索引
PUT /user
PUT /user?prety
#末尾追加pretty,可以漂亮地打印JSON响应(如果有的话)
#红色警告说在7.x分片数会由默认的5改为1,我们忽略即可
查询某个索引
GET /user
插入某个索引
PUT /user
删除某个索引
DELETE /user
三、对文档进行操作
创建文档
PUT /user/a/1
{
"name":"zs",
"age": 30,
"girls":[
{"name": "zhiling", "age": 10},
{"name": "fengjie", "age": 20}
]
}
查询所有文档
GET /user/a/_search
根据文档ID查看文档
GET /user/a/3?pretty
根据文档ID删除某个索引的某个文档
DELETE /user/a/3
替换文档
# 当我们通过执行PUT /索引名/类型名/文档id命令的添加时
# 如果文档id已经存在,那么再次执行上面的命令,ElasticSearch将替换现有文档
POST /user/a/3
{
"name":"zs",
"age": 30,
"girls":[
{"name": "zhiling", "age": 10},
{"name": "fengjie", "age": 20}
]
}
更新文档
# 了创建和替换文档外,ES还可以更新文档中的某一个字段内容
# 注:Elasticsearch实际上并没有在底层执行就地更新,而是先删除旧文档,再添加新文档
POST /user/a/3/_update?pretty
{
"doc": {"nation":"china"}
}
批处理
POST到type后加/_bulk
POST /user/a/_bulk
{"update":{"_id":3}}
{"doc":{"na":"usa"}}
可以批量更新时进行其他操作,对相同的文档id操作时不必“切”
#批量创建2个id(需要“切”)
POST /movie_index/movie/_bulk
{"index":{"_id":66}}
{"id":300,"name":"incident red sea","doubanScore":5.0,"actorList":[{"id":4,"name":"zhang cuishan"}]}
{"index":{"_id":88}}
{"id":300,"name":"incident red sea","doubanScore":5.0,"actorList":[{"id":4,"name":"zhang cuishan"}]}
#批量对1个id更新、删除(不需要“切”)
POST /movie_index/movie/_bulk
{"update":{"_id":"66"}}
{"doc": { "name": "wudangshanshang" } }
{"delete":{"_id":"88"}}
四、查询操作
搜索参数传递方式
1. URI发送搜索参数查询所有数据
GET /bank/_search?q=* &pretty
2. 请求体(request body)发送搜索参数查询所有数据
GET /bank/_search
{
"query" : {
"match_all" : {
} }
}
按分词查询(必须使用分词text类型)
ES中,name属性会进行分词,底层以倒排索引的形式进行存储,对查询的内容也会进行分词,然后和文档的name属性内容进行匹配,所以命中3次,不过命中的分值不同
注意:ES底层在保存字符串数据的时候,会有两种类型text和keyword
text:分词
keyword:不分词
#
GET movie_index/movie/_search
{
"query":{
"match": {"name":"operation red sea"}
}
}
#
GET /bank/_search
{
"query": {"match": {
"address": "Avenue 610"
}}
}
分词匹配查询
# 按照Avenue、610两个词进行查询匹配
GET /bank/_search
{
"query": {"match": {
"address": "Avenue 610"
}}
}
# 将"610 Tapscott Avenue"作为一个完整的词进行查询匹配
# 需要注意的是,这样必须查找的目标完全匹配,多一个空格都不行!
GET /bank/_search
{
"query": {"match": {
"address.keyword": "610 Tapscott Avenue"
}}
}
# 短语匹配
# 将"610 Tapscott"作为一个整体进行查询匹配
# 这种查询只需要包含查找词,不需要查找的目标完全匹配
GET /bank/_search
{
"query": {"match_phrase": {
"address": "610 Tapscott"
}}
}
按分词子属性查询
GET movie_index/movie/_search
{
"query":{
"match": {"actorList.name