Elasticsearch快速入门
Elasticsearch 简介
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
- 一个分布式的、Restful风格的搜索引擎
- 支持对各种类型的数据的检索
- 搜索速度快,可以提供实时的搜索服务
- 便于水平扩展,每秒可以处理PB级海量数据
快速入门
一、基础概念-快速入门
节点 Node、集群 Cluster 和分片 Shards
ElasticSearch 是分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个实例。单个实例称为一个节点(node),一组节点构成一个集群(cluster)。分片是底层的工作单元,文档保存在分片内,分片又被分配到集群内的各个节点里,每个分片仅保存全部数据的一部分。
索引 Index、类型 Type 和文档 Document
对比我们比较熟悉的 MySQL 数据库:
index → db
type → table
document → row
如果我们要访问一个文档元数据应该包括囊括 index/type/id 这三种类型,很好理解。
Elasticsearch 和 Redis 底层的 Netty 启动冲突问题
/*** 解决 Elasticsearch 和 Redis 底层的 Netty 启动冲突问题*///PostConstruct用于管理Bean的生命周期,注解所修饰的方法会在构造器调用完以后执行@PostConstructpublic void init() {//see Netty4Utils.setAvailableProcessors()System.setProperty("es.set.netty.runtime.available.processors", "false");}
项目中Redis是先启动的其底层的Netty已经被应用,Elasticsearch 和 Redis 底层的 Netty 启动冲突
解决方式:在项目启动前,执行init()方法将 Netty4Utils.setAvailableProcessors() 中属性es.set.netty.runtime.available.processors设置为 false
Elasticsearch设置最大返回条数
搜索结果超过 10000 —》 服务器发生异常:all shards failed,分页结果报错
在Elasticsearch中如果需要做分页查询,我们通常使用form和size实现。form指定从有序哪一行开始,size表示从当前开始读取多少行。但是我们发现查询结果最大只能到10000,这是因为Elasticsearch中的size的默认值在index.max_result_window 中设置,并且默认值就是10000。下面我们通过Elasticsearch的API设置最大的读取行。
注:Elasticsearch支持的最大值是2^31-1,也就是2147483647。
下面我们来查看一下是否设置成功:
如图,设置成功
