今日学习, ElasticSearch | 青训营笔记

43 阅读2分钟

今日学习, ElasticSearch。

ElasticSearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。

ElasticSearch和Lucene

  • ElasticSearch底层是基于Lucene来实现的

  • Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目

  • Lucene的优势

    • 易扩展
    • 高性能(基于倒排索引)
  • Lucene的缺点

    • 只限于Java语言开发
    • 学习曲线陡峭
    • 不支持水平扩展

倒排索引

  • 倒排索引的概念是基于MySQL这样的正向索引而言的

  • 正向索引

    • 优点:可以给多个字段创建索引,根据索引字段搜索、排序速度非常快
    • 缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描
  • 倒排索引

    • 优点:根据词条搜索、模糊搜索时,速度非常快
    • 缺点:只能给词条创建索引,而不是字段,无法根据字段做排序

文档数据会被序列化为json格式后存储在ElasticSearch中,而Json文档中往往包含很多的字段(Field),类似于数据库中的列

DevTools

  • kibana中提供了一个DevTools界面
  • 编写DSL来操作ElasticSearch,并且有对DSL语句的自动补全功能
  • IK分词器
    • ik_smart:最少切分
    • ik_max_word:最细切分
    • 扩展词汇

索引库操作


  • 索引库就类似于数据库表,mapping映射就类似表的结构
  • 我们要向es中存储数据,必须先创建

创建索引库和映射

  • 基本语法

    • 请求方式:PUT
    • 请求路径:/{索引库名},可以自定义
    • 请求参数:mapping映射

查询索引库

  • 基本语法

    • 请求方式:GET
    • 请求路径:/{索引库名}
    • 请求参数:

修改索引库

  • 基本语法

    • 请求方式:PUT
    • 请求路径:/{索引库名}/_mapping
    • 请求参数:mapping映射

删除索引库

  • 基本语法:

    • 请求方式:DELETE
    • 请求路径:/{索引库名}
    • 请求参数:无
    • DELETE /{索引库名}

文档操作


  • POST新增文档
  • 查询文档(GET)
  • 删除文档(DELETE)
  • 修改文档
    • 全量修改:PUT /{索引库名}/_doc/{id}
    • 增量修改:POST /{索引库名}/_update/{id}