Elasticsearch入门 - 概念篇

@Document(indexName = "item",type = "docs", shards = 1, replicas = 0)
public class Item {
    @Id
    private Long id;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String title; 

    @Field(type = FieldType.Keyword)
    private String category;
}

什么是 Elasticsearch

Elasticsearch 是一个基于 Lucene 的开源搜索引擎,而 Lucene 是一个搜索库,直接使用的话会非常复杂。有了 Elasticsearch 后,我们就可以通过 RESTful API 来调用 Lucene 的搜索功能。它支持各种语言的客户端甚至命令行与之交互 ,除此之外,它还具备以下特点:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

什么是搜索引擎

我们可以举一些使用场景,比如我们经常用的百度搜索,或者一些电商平台的搜索功能,比如:在电商上搜索 “牙膏”,它就能帮我们罗列出一堆包含牙膏的商品。具体的图这里就不贴了,我们能看到的就是那些包含牙膏的搜索结果,而搜索背后的处理过程都是由搜索引擎帮我们完成的。

名词解释

要想初步认识 Elasticsearch,需要认识以下几个名词:

  • 索引(indices)
  • 类型(type)
  • 文档(document)

在 Elasticsearch中,文档(document)归属于一种类型(type),而这些类型存在于索引(index)中。

这样说可能还是有点模糊,我们可以拿一种关系型数据库来对比,如下所示:

Mysql -> Databases -> Tables -> Rows -> Columns

Elasticsearch -> Indices -> Types -> Documents -> Fields

Elasticsearch 的安装

现在 Elasticsearch 版本已经更新到 7.x (个人安装也是采用最新版本),这里推荐几篇安装教程,亲测有效。

Elasticsearch 7.x 最详细安装及配置

https://www.cnblogs.com/Alandre/p/11386178.html

安装过程可能出现的错误

https://www.cnblogs.com/duanxuan/p/6473005.html

https://www.cnblogs.com/hellxz/p/11057234.html

总结

本文主要介绍了 Elasticsearch 的基本概念,核心关键词还是 检索。文中大部分介绍还是相对比较官方,不理解也没关系,特别是索引,类型,文档的概念,这些在具体使用过程中会更好理解。