ElasticSearch6.x入门?看这一篇就够了

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 相关概念知识

什么是ES?

ES 是使用 Java 编写的一种开源搜索引擎,它在内部使用 Lucene 做索引与搜索,通过对 Lucene 的封装,隐藏了 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)

相关概念知识

以下解释仅仅为了方便理解,不代表等同。

    • 分片:类似小说分章节
    • Index(索引):类似关系型数据库中的数据库
    • Type: 类似关系型数据库中的表。在 ES 6.x 中只允许每个 Index 中包含一个 Type。在 7.x 版本中将彻底移除 Type。
    • Document(文档):是存储在Elasticsearch中的JSON文档。它就像关系数据库中表中的一行
    • field:相当于列
    • id:标识一个文档,必须是唯一的。如果没有提供ID,则会自动生成
    • mapping:定义一个type

    相关结构

    ES默认会有5个分片,1个备份

    image.gifes1.png

    image.gifes2.png

    数据类型

    image.gifes3.png

    字符串类型

      • text:当一个字段是要被全文搜索的,比如产品描述,应该使用text类型。text类型的字段不用于排序,很少用于聚合。
      • keyword:类型适用于索引结构化的字段,比如email地址、主机名、状态码和标签。如果字段需要进行过滤、排序、聚合。keyword类型的字段只能通过精确值搜索到。

      整数类型

      在满足需求的情况下,尽可能选择范围小的数据类型。比如,某个字段的取值最大值不会超过100,那么选择byte类型即可。迄今为止吉尼斯记录的人类的年龄的最大值为134岁,对于年龄字段,short足矣。

      字段的长度越短,索引和搜索的效率越高。

      类型 取值范围
      byte -128~127
      short -32768~32767
      integer -2^31~2^31-1
      long -2^63~2^63-1

      浮点类型

      类型 取值范围
      doule 64位双精度IEEE 754浮点类型
      float 32位单精度IEEE 754浮点类型
      half_float 16位半精度IEEE 754浮点类型
      scaled_float 缩放类型的的浮点数

      时间类型

      日期将始终以字符串形式呈现,即使最初在JSON文档中提供的日期很长也是如此。  format可以是如下这种||的形式

      "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"

      image.gif

      布尔类型

      布尔字段接受JSONtruefalse值,但也可以接受为 "true" 或 "false" 的字符串

      范围数据类型

      integer_range

      一个带符号的32位整数范围,最小值为-2^31,最大值为2^31-1

      float_range

      一系列单精度32位IEEE 754浮点值。

      long_range

      一系列带符号的64位整数,最小值为-2^63,最大值为2^63-1

      double_range

      一系列双精度64位IEEE 754浮点值。

      date_range

      自系统时代以来经过的一系列日期值,表示为无符号的64位整数毫秒。

      ip_range

      支持IPv4IPv6(或混合)地址的一系列ip值。

      RestFul风格操作

      GET请求:

      • http://ip:port/index : 查询索引信息
      • http://ip:port/index/type/doc_id : 查询指定的文档信息

      POST请求:

      • http://ip:port/index/type/_search : 查询文档,可以在请求体中添加json字符串来代表查询条件
      • http://ip:port/index/type/doc_id/_update : 修改文档,在请求体中指定json字符串代表修改的具体信息

      PUT请求:

      • http://ip:port/index : 创建一个索引,需要在请求体中指定索引的信息,类型,结构
      • http://ip:port/index/type/_mappings : 代表创建索引时,指定索引文档存储的属性的信息

      DELETE请求:

      • http://ip:port/index : 删库跑路
      • http://ip:port/index/type/doc_id : 删除指定文档

      倒排索引结构

      如何理解倒排索引呢?假如现有三份数据文档,文档的内容如下分别是:

        • Java is the best programming language.
        • PHP is the best programming language.
        • Javascript is the best programming language.

        为了创建倒排索引,我们通过分词器将每个文档的内容域拆分成单独的词(我们称它为词条或 Term),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。

        结果如下所示:

        Term          Doc_1    Doc_2   Doc_3
        -------------------------------------
        Java        |   X   |        |
        is          |   X   |   X    |   X
        the         |   X   |   X    |   X
        best        |   X   |   X    |   X
        programming |   x   |   X    |   X
        language    |   X   |   X    |   X
        PHP         |       |   X    |
        Javascript  |       |        |   X
        -------------------------------------

        image.gif

        这种结构由文档中所有不重复词的列表构成,对于其中每个词都有一个文档列表与之关联。这种由属性值来确定记录的位置的结构就是倒排索引。带有倒排索引的文件我们称为倒排文件。

        我们将上面的内容转换为图的形式来说明倒排索引的结构信息,如下图所示:

        image.gifes4.png

        其中主要有如下几个核心术语需要理解:

        • 词条(Term):索引里面最小的存储和查询单元,对于英文来说是一个单词,对于中文来说一般指分词后的一个词。
        • 词典(Term Dictionary):或字典,是词条 Term 的集合。搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。
        • 倒排表(Post list):一个文档通常由多个词组成,倒排表记录的是某个词在哪些文档里出现过以及出现的位置。每条记录称为一个倒排项(Posting)。倒排表记录的不单是文档编号,还存储了词频等信息。
        • 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
        相关实践学习
        使用阿里云Elasticsearch体验信息检索加速
        通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
        ElasticSearch 入门精讲
        ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
        相关文章
        |
        6月前
        |
        安全 Linux 开发工具
        Elasticsearch 搜索入门技术之一
        Elasticsearch 搜索入门技术之一
        256 1
        |
        6月前
        |
        JSON 自然语言处理 数据库
        数据库-ElasticSearch入门(索引、文档、查询)
        数据库-ElasticSearch入门(索引、文档、查询)
        384 0
        |
        存储 关系型数据库 数据库
        ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
        ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
        ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
        |
        1月前
        |
        存储 Java API
        Elasticsearch 7.8.0从入门到精通
        这篇文章详细介绍了Elasticsearch 7.8.0的安装、核心概念(如正排索引和倒排索引)、RESTful风格、各种索引和文档操作、条件查询、聚合查询以及在Spring Boot中整合Elasticsearch的步骤和示例。
        117 1
        Elasticsearch 7.8.0从入门到精通
        |
        2月前
        |
        数据可视化 Java Windows
        Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
        本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
        Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
        |
        2月前
        |
        存储 关系型数据库 MySQL
        浅谈Elasticsearch的入门与实践
        本文主要围绕ES核心特性:分布式存储特性和分析检索能力,介绍了概念、原理与实践案例,希望让读者快速理解ES的核心特性与应用场景。
        |
        3月前
        |
        JSON 搜索推荐 数据挖掘
        ElasticSearch的简单介绍与使用【入门篇】
        这篇文章是Elasticsearch的入门介绍,涵盖了Elasticsearch的基本概念、特点、安装方法以及如何进行基本的数据操作,包括索引文档、查询、更新、删除和使用bulk API进行批量操作。
        ElasticSearch的简单介绍与使用【入门篇】
        |
        2月前
        |
        JSON 监控 Java
        Elasticsearch 入门:搭建高性能搜索集群
        【9月更文第2天】Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 构建。它能够处理大量的数据,提供快速的搜索响应。本教程将指导你如何从零开始搭建一个基本的 Elasticsearch 集群,并演示如何进行简单的索引和查询操作。
        203 3
        |
        3月前
        |
        JSON 测试技术 API
        黑马商城 Elasticsearch从入门到部署 RestClient操作文档
        这篇文章详细介绍了如何使用Java的RestHighLevelClient客户端与Elasticsearch进行文档操作,包括新增、查询、删除、修改文档以及批量导入文档的方法,并提供了相应的代码示例和操作步骤。
        |
        3月前
        |
        JSON 自然语言处理 Java
        Elasticsearch从入门到部署 文档操作 RestAPI
        这篇文章详细介绍了Elasticsearch中文档的增删改查操作,并通过Java的RestHighLevelClient客户端演示了如何通过REST API与Elasticsearch进行交云,包括初始化客户端、索引库的创建、删除和存在性判断等操作。