Elasticsearch(简称es)是建立在全文搜索引擎库 Apache Lucene™ 基础上的实时分布式搜索分析引擎。它通过隐藏 Lucene 的复杂性,提供一套简单的 RESTful API。它不仅有Lucene的能力,还是一个分布式的实时文档存储,每个字段可以被索引和搜索、还是一个分布式实时分析搜索引擎、能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。es常被用作全文检索、结构化搜索、分析以及这三个功能的组合。帮助文档请参考:
es中文官网:https:///cn/
es中文文档:https:///guide/cn/index.html
es参考手册:https:///guide/en/elasticsearch/reference/current/index.html
es Github源码:https:///elastic/elasticsearch
Elasticsearch集群可以包含多个节点,每个节点可以包含多个索引,每个索引可以包含多个类型(高版本已逐渐取消多类型),每个类型存储着多个文档 ,每个文档又有多个字段(在es中称为“域”)。需要注意的是同一索引的不同类型下文档的域必须相同。
Elasticsearch是面向文档的,也就是说es是对整个文档进行索引、检索、排序和过滤的,而不是对结构化数据那样的行列数据,所以也就没有分表和联表查询这种说法。它存储的是整个对象或文档,同时会索引每个文档的内容,使之可以被检索。正因为es是面向文档的,其文档内部的结构关系并没有破坏,才使es能支持复杂的全文检索。
如果把文档ID当成是key,文档内容当成是value,那么每个key都会对应唯一的value值。通俗地讲,正向索引就是通过key找value,也就是先找到是哪个文档,然后再在该文档中找内容,如下所示:
而Elasticsearch 中很重要的一个数据结构是倒排索引 (反向索引,英文名:Inverted Index),则是通过value找key,也就是先在文档的内容中找需要的内容,然后定位到是哪个文档。对于同一个词,可能在多个文档中出现,所以通过value找到的key是个数组,可以简单理解为是文档ID的数组(实际上,还存储着比如:词频、偏移量等信息)如下所示:
百度云Elasticsearch对用户及权限的控制,维护操作只能由superuser用户执行:
1、查看集群有哪些用户:
GET http://$user:$passwd@$host:$port/_user/show
2、创建针对某个索引的用户权限:
POST http://$user:$passwd@$host:$port/_user/create
{
"username" : "test",
"password" : "test123",
"get_path" : ["/index1"],
"put_path" : ["/index2"],
"post_path" : ["/index3"],
"del_path" : ["/index4"],
"read_index": ["index5"],
"write_index": ["index6"]
}
3、修改用户权限:
POST http://$user:$passwd@$host:$port/_user/alter
{
"username" : "test",
"password" : "test123",
"get_path" : ["/index11","/_cat/health"]
}
出现的字段会全部覆盖原有字段内容,未出现的字段会保留原来的内容。
4、删除用户:
POST http://$user:$passwd@$host:$port/_user/delete
{
"username" : "test"
}
5、重置用户密码:
POST http://$user:$passwd@$host:$port/_user/resetpasswd
{
"password" : "test456"
}