ElasticSearch学习记录
Posted 风过无痕521
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch学习记录相关的知识,希望对你有一定的参考价值。
一、简介
ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。
Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
二、概念
1、节点[Node]:单个 Elastic 实例称为一个节点
2、集群[Cluster]:一组节点构成一个集群
3、索引[Index]:含有相同属性的文档集合
4、文档[Document]:可以被索引的基础数据单位
5、类型[Type]:索引可以定义一个或多个类型,文档必须属于一个类型
6、分词器[Analyzer]:分词组件
7、分片[Shard]:每个索引都有多个分片,每个分片都是 Lucene 索引
8、备份[Replicas]:拷贝一份分片就完成分片的备份
三、集群图例
四、底层
1、倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。
由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。
带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
2、分片原理
分片路由算法:hash 取模
shard = hash(routing) % number_of_primary_shards
routing值是一个任意字符串,它默认是_id但也可以自定义。
这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),
余数的范围永远是0到number_of_primary_shards - 1,这个数字就是特定文档所在的分片。
这也解释了为什么主分片的数量只能在创建索引时定义且不能修改:如果主分片的数量在未来改变了,所有先前的路由值就失效了,文档也就永远找不到了。
3、集群Master选举
基于 Bully 算法实现。
4、脑裂(split brain)
脑裂问题,就是同一个集群中的不同节点,对于集群的状态,有了不一样的理解。
基础资料:
ELK官网:https://www.elastic.co/
ELK官网文档:https://www.elastic.co/guide/index.html
ELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
ELK中文社区:https://elasticsearch.cn/
ELK-API :https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
Elasticsearch入门系列~通过Java一系列操作Elasticsearch
查询语法
elasticsearch 基础 —— Query String
19 个很有用的 ElasticSearch 查询语句 篇一
elasticsearch基本操作之--使用QueryBuilders进行查询
Elasticsearch java api 常用查询方法QueryBuilder构造举例
ElasticSearch AggregationBuilders java api常用聚会查询
Elasticsearch java API (17)Aggregations 聚合 函数
Elasticsearch——分页查询From&Size VS scroll
ElasticSearch - 解决ES的深分页问题 (游标 scroll)
Elasticsearch 查询in 和 not in 的实现方式
elasticsearch系列四:搜索详解(搜索API、Query DSL)
elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)
Elasticsearch 清空type下所有documents
工具
windows下安装ElasticSearch的Head插件
elasticsearch 安装部署以及插件head安装,和使用教程
地址:https://github.com/mobz/elasticsearch-head
git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm run start open http://localhost:9100/
集群搭建
以上是关于ElasticSearch学习记录的主要内容,如果未能解决你的问题,请参考以下文章