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,也就是先找到是哪个文档,然后再在该文档中找内容,如下所示:

es的 shard 是什么意思 es啥意思?_es的 shard 是什么意思

        而Elasticsearch 中很重要的一个数据结构是倒排索引 (反向索引,英文名:Inverted Index),则是通过value找key,也就是先在文档的内容中找需要的内容,然后定位到是哪个文档。对于同一个词,可能在多个文档中出现,所以通过value找到的key是个数组,可以简单理解为是文档ID的数组(实际上,还存储着比如:词频、偏移量等信息)如下所示:

es的 shard 是什么意思 es啥意思?_elasticsearch_02

百度云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"
}