全文搜索引擎 ElasticSearch

  • ElasticSearch观念转换:

索引:可以认为是数据库中的一个Schema。

类型:逻辑上具有相同格式的文档集合,可以和数据库中的表概念类似。

文档:对所描述的实体对象的具体实例化,可以和数据库中的行相对应。

字段:以Json的键值对方式组织的多个字段。字段可以是对象类型、数组类型或者核心数据类型,字段可以与数据库列对应。

  • 集群节点类型:

主节点:负责节点间集群之间的变更协调。这些变更包括索引、映射的管理、增删节点,分片重分配等。

数据节点:用来存放Lucene索引,它负责ElasticSearch中的数据插入,并满足用户的查询请求。

客户端节点:相当于负载均衡器,负责解析HTTP请求,并将其转发到相应的数据节点。它把解析和转发请求这部分工作从主节点和数据节点上独立出来。另外客户端节点也负责将各个节点运算的中间结果进行汇总,并将最终结果返给用户。在es集群中客户端节点不是必须的,但如果使用必须禁用其它节点的http,这样就会强制使用es内部通信协议。

部落节点:部落节点可以实现多个集群的桥接。它可以作为两个集群间的负载均衡器。它为后端的多个集群提供了统一访问客户端。

  • 数据分布:

分片:es索引允许分隔成不同的数据子集存储在不同节点上,分片就是es索引部分数据的数据子集,分片是单个Es数据节点上的一个独立存储单元,分片其实就是一个纯碎的Lucene索引。

副本:es副本提供的故障转移机制,除了故障转移,副本也可以参与执行查询的过程。如果你的应用系统正在承受庞大的流量负载,那么增加硬件扩展更多节点,把每个分片和副本分配到独占的节点上会获得更大的并行度提升查询效率。注意:(副本越多,向索引中插入文档的效率就越低)。

  • 生产环境配置(硬件):

内存:es非常消耗内存,为了避免OutOfMemory以及由于OutOfMemory引发的其它潜在问题,同时保障查询的效率,内存是我们硬件规划的首要考虑因素,建议内存在16G到64G之间。

扫描二维码关注公众号,回复: 4994408 查看本文章

CPU:cpu的时钟频率对es的性能影响并不太大,但是文档的插入和文档搜索的性能取决于并发线程数,而并发线程数取决于CPU核心的个数。在生产环境中最好有4到8个cup核心,对es来说与更快的cup速度相比,更多的cup核心更为重要。

磁盘:在进行文档插入或者文档查询是,es是io极其敏感的,尤其我们在向es批量加载数据时,io对加载性能的影响更大。高IOPS的SSD硬盘成为了不二之选。(注:你可能觉得频繁更新操作会缩短SSD硬盘寿命,但是lucene索引是完全不可修改的,更新操作是删除,然后插入,对es来说也不存在什么更新问题)。

网络:最好不要垮数据中心。注意:集群查询性能是由集群中性能最差的主机决定,可以考虑闲置的低配置作为客户端使用,或者(客户端+主节点)。

  • 其它参数配置

内存配置:默认情况下es节点的堆内存为1G,es将自动数据缓存到内存中后可大大提高过滤、排序和切面的速度,所以这个参数必须设置,一般es分配的内存至少是物理内存的一半,另外一半用于lucence缓存字段信息,它使用的操作系统缓存,而不是es堆内存。

猜你喜欢

转载自blog.csdn.net/chechelove886/article/details/84565172