集群相关
使用以下请求即可看到所有关于es的监控信息
http://8.129.84.57:9200/_cat
可使用的监控信息
可选监控信息 | |
---|---|
/_cat/allocation | |
查看节点磁盘以及资源分配信息 | |
/_cat/shards | |
查看节点分片信息 | |
/_cat/shards/{index} | |
查看具体索引的分片信息 | |
/_cat/master | |
查看当前集群主节点信息 | |
/_cat/nodes | |
查看当前集群所有节点信息 | |
/_cat/tasks | |
显示当前在集群中执行的任务的信息 | |
/_cat/indices | |
显示所有的索引信息 | |
/_cat/indices/{index} | |
显示某一个索引信息 | |
/_cat/segments | |
查看缓存信息 | |
/_cat/segments/{index} | |
查看指定索引的缓存信息 | |
/_cat/count | |
显示索引文档数量 | |
/_cat/count/{index} | |
显示指定索引的文档数量 | |
/_cat/recovery | |
显示内存信息 | |
/_cat/recovery/{index} | |
显示指定索引的内存信息 | |
/_cat/health | |
显示健康状态 | |
/_cat/pending_tasks | |
显示正在等待的任务 | |
/_cat/aliases | |
显示别名、过滤器、路由信息 | |
/_cat/aliases/{alias} | |
显示指定别名的过滤器、路由信息 | |
/_cat/thread_pool | |
查看线程池信息 | |
/_cat/thread_pool/{thread_pools} | |
查看指定线程池信息 | |
/_cat/plugins | |
显示每个运行插件节点的视图 | |
/_cat/fielddata | |
查看fileddata的值,对分词的field,直接执行聚合操作,会报错,你必须要打开fielddata,然后将正排索引数据加载到内存中 | |
/_cat/fielddata/{fields} | |
指定分词的fielddata | |
/_cat/nodeattrs | |
显示node节点属性 | |
/_cat/templates | 查看模板信息 |
结果数据优化
verbose
每个命令都支持使用?v参数,来显示详细的信息:
http://8.129.84.57:9200/_cat/shards?v
hlep
每个命令都支持使用help参数,来输出可以显示的列:
http://8.129.84.57:9200/_cat/indices?help
headers
通过h参数,可以指定输出的字段:
http://192.168.126.81:9200/_cat/nodes?v&h=ip,master,name
结果
索引增删改查
创建非结构化索引
在Lucene中,创建索引是需要定义字段名称以及字段的类型的,在Elasticsearch中提供了非结构化的索引,就是不 需要创建索引结构,即可写入数据到索引中,实际上在Elasticsearch底层会进行结构化操作,此操作对用户是透明 的。
PUT http://8.129.84.57:9200/my_index01
{
"settings": {
"index": {
"number_of_shards": "2", //分片数
"number_of_replicas": "0" //副本数
}
}
}
创建结构化索引
与非结构话不同,在创建索引时我们需要指明索引的具体信息,这里topic就是我们的索引类型,注意在7.0以后是不需要指明索引类型的
PUT http://8.129.84.57:9200/my_index02
{
"settings": {
"index": {
"number_of_shards": "2",
"number_of_replicas": "2"
}
},
"mappings": {
"topic": {
"properties": {
"id": {
"type": "long",
"store": true,
"index":"false"
},
"title": {
"type": "text",
"store": true,
"index":"true",
"analyzer":"standard"
},
"content": {
"type": "text",
"store": true,
"index":"true",
"analyzer":"standard"
}
}
}
}
}
mapping中各参数解析
properties | 具体的字段配置 |
---|---|
id | 字段 |
type | 在7.0往后我们可以不指定文档文档类型 |
store | 公共属性 |
index | analyzed:编入索引供搜索、no:不编入索引、not_analyzed:不经分析编入索引(此值必须将类型设置为string才可以使用,但是在5.0后string已经被废弃) 而在6.0后值只能设置为false(编入索引)/true(不编入索引) |
analyzer | 定义用于索引和搜索的分析器名称,默认为全局定义的分析器名称。可以开箱即用的分析器:standard,simple,whitespace,stop,keyword,pattern,language,snowball |
查看索引
get http://8.129.84.57:9200/my_index01
//结果如下
{
"my_index02": {
"aliases": {},
"mappings": {
"topic": {
"properties": {
"content": {
"type": "text",
"store": true,
"analyzer": "standard"
},
"id": {
"type": "long",
"index": false,
"store": true
},
"title": {
"type": "text",
"store": true,
"analyzer": "standard"
}
}
}
},
"settings": {
"index": {
"creation_date": "1619922778491",
"number_of_shards": "2",
"number_of_replicas": "2",
"uuid": "vBBhyx6cR1OW9vY9ZU12nQ",
"version": {
"created": "6050499"
},
"provided_name": "my_index02"
}
}
}
}
修改索引
PUT http://8.129.84.57:9200/my_index01/_settings
{
"number_of_replicas": 1
}
删除索引
DELETE http://8.129.84.57:9200/my_index01/my_index01
索引数据增删改查
插入数据时可以指定id插入也可以不指定id插入说明:非结构化的索引,不需要事先创建,直接插入数据默认创建索引。
增加数据(带id)
注意在7.0后没有索引类型这一概念,所以不需要指明索引类型,但是需要使用_doc代替,而在8.0则完全移除了,只需要指明索引和id
POST http://8.129.84.57:9200/my_index02/topic/1000
{
"id":1000,
"title":"插入数据",
"content":"插入一条带id的数据"
}
增加数据(不带id)
POST http://8.129.84.57:9200/my_index02/topic
{
"id":1001,
"title":"插入数据",
"content":"插入一条不带id的数据"
}
查询数据
这里查询只是简单查询,如果要查询具体的值可以将_search替换为id号,同时关于DSL搜索,高亮显示,聚合,中文分词搜索将会单独开一篇
http://8.129.84.57:9200/my_index02/topic/_search
响应结果
{
"took": 75,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1.0,
"hits": [
{
"_index": "my_index02",
"_type": "topic",
"_id": "Q2D-KnkB1Q44_apWZULk",
"_score": 1.0,
"_source": {
"id": 1001,
"title": "插入数据",
"content": "插入一条不带id的数据"
}
},
{
"_index": "my_index02",
"_type": "topic",
"_id": "1000",
"_score": 1.0,
"_source": {
"id": 1000,
"title": "插入数据",
"content": "插入一条带id的数据"
}
}
]
}
}
可以看到如果我们没有带id的话他会默认存放一个id,但是为了以后更好的维护,建议带上id
删除数据
DELETE http://8.129.84.57:9200/my_index02/topic/Q2D-KnkB1Q44_apWZULk
result代表已经删除,数据每被修改一次version便会 + 1,之后查询会提示404,这里注意:删除一个文档也不会立即从磁盘上移除,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的
时候才会在后台进行删除内容的清理
修改数据
在Elasticsearch中,文档数据是不为修改的,但是可以通过覆盖的方式进行更新。
POST http://8.129.84.57:9200/my_index02/topic/1000
{
"id":1001,
"title":"插入数据",
"content":"更新了一次数据"
}
此时如果我们只传入一个值呢?
很显然他把我们的数据全部给覆盖了
那么问题来了,可以局部更新吗?答案时可以的。
但是前面不是说,文档数据不能更新吗? 其实是这样的:
在内部,依然会查询到这个文档数据,然后进行覆盖操作,步骤如下:
POST http://8.129.84.57:9200/my_index02/topic/1000/_update
{
"doc": {
"id":1002,
"title":"局部更新数据"
}
}
这里我们没有传content,按之前的操作应该会把我们的content给清空,然而结果如何
可以看到content没有被覆盖