Elasticsearch笔记(1)

201 阅读2分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

elasticsearch vs solr

Elasticsearch的优缺点:

  • 优点

    Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。

    Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。

    处理多租户不需要特殊配置,而Solr则需要更多的高级设置。

    Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。

    各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

  • 缺点

    只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)

    还不够自动(不适合当前新的Index Warmup API)

Solr的优缺点:

  • 优点

    Solr有一个更大、更成熟的用户、开发和贡献者社区。

    支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。

    Solr比较成熟、稳定。

    不考虑建索引的同时进行搜索,速度更快。

  • 缺点

    建立索引时,搜索效率下降,实时索引搜索效率不高。

Elasticsearch核心概念

ES -> 数据库 索引index -> 表 文档 document -> 行(记录) 字段 fields -> 列

例如:

jacquesh_index
{
    id: 1001,
    name: jason,
    age: 19
},
{
    id: 1002,
    name: tom,
    age: 18
},
{
    id: 1003,
    name: rose,
    age: 22
}

ES核心概念图.jpg

集群相关

分片(shard):把索引库拆分为多份,分别放在不同的节点上,比如有3个节点,3个节点的所有数据内容加在一起是一个完整的索引库。分别保存到三个节点上,目的为了水平扩展,提高吞吐量。

备份(replica):每个shard的备份。

简称

shard = primary shard(主分片) replica = replica shard(备份节点)

image-20200904022427861.png

倒放排序

倒排排序的就是将重复次数多且字数多文档ids的的排序在前面,方便ES查询

倒放排序.jpg