首页 > 技术文章 > 读《深入理解Elasticsearch》点滴-基础概念

jiangtao1218 2018-03-17 17:58 原文

  1. Lucene的概念
    • document:以json的形式体现,搜索和搜索的主要载体
    • field:document的一个部分
    • term(词项):代表文本中的一个词
    • token(词条):term在field中的一次出现,包括词项的文本、开始和结束的偏移、词条类型
  2. inverted index(倒排索引):将词项映射到文档。倒排索引是面向词项,而不是面向文档的。
  3. segmeng:每个索引由多个段组成,创建后不再修改,文档被删除后,删除信息单独保存在一个文档中,而段本身并没有修改。
  4. segmengs merge:更少的段提供更快的搜索速度。段合并非常耗费IO。
  5. inverted index的附属信息
    • norm:norm是一种与“每个被索引文档”相关的因子。它存储文档归一化结果,被用于计算查询的相关得分。norm基于索引时的文档加权值(boost)计算得出,与文档一起被索引存储。使用norm可以让lucene在建立索引时考虑不同文档的权重,不过需要一些额外的磁盘空间和内存来索引和存储norm信息。
    • term vector(词项向量):针对每个文档的微型倒排索引,词项向量的每个维由词项和出现的频率结对组成,还可以包括词项的位置信息。关键词高亮需要启用词项向量索引。
    • doc values:对于切面(faceting)和聚合(aggretation)等操作,需要操作文档,而不是词项,lucene需要把倒排索引再翻转过来构成正排索引来完成“分组、排序、聚合”操作。doc values的存储方式可以基于内存或硬盘。
  6. 分析数据:字符串转换为词项的过程称为分析(analysis)。分析器=字符映射器+分词器+过滤器
    • charactor mapper(字符映射器):用于调用分词器之前的文本预处理过程。如HTML文本的去标签处理。
    • tokenizer(分词器):分词器用来将文本切割成词条,词条是携带额外信息的词项,这些额外的信息包括:词项在原始文本中的位置,词项的长度。分词器工作的结果被称为词条流,这个词条流被一个接一个的推送给过滤器。
    • filter(过滤器):数额可选,0个或多个,可以移除、修改、创建新的词条。如小写过滤器、ASCII过滤器、同义词过滤器。
  7. 索取期间和搜索期间需要使用相同的分析器
  8. lucene查询语言:一个查询(query)通常被分割为“词项+操作符”)
    • 词项:一个词,或双引号括起来的一个短语
    • 操作符:
      • AND(+)
      • OR(空操作符)
      • NOT(-)
    • 如   +lucene -elasticsearch
  9. 在字段中查询:
    • title:(+Elasticsearch +"mastering  book")
    • 等于 +title:Elestacsearch +title:"master book"
  10. 词项修饰符:
    • wildcard(通配符)。?:匹配任意一个字符;*:匹配多个字符。处于对性能的考虑,通配符不能作为词项的第一个字符出现
    • fuzzy and proximity(模糊查询)。~n。
      • writer~2:意味著writer和writers都匹配
      • title:"mastering Elasticsearch"~2,则可以匹配mastering book elasticsearch
    • ^(加权):对词项加权(boosting),提高该词项的重要程度。(加权的对象有“文档、字段、词项、查询子句)
    • [](范围查询):price:[10.00 TO 15.00],表示大于等于10.00,小于等于15.00;范围查询也可以作用于字符串,如name:[Adam TO Adria]
    • [}(范围查询,不包含上边界)
    • [10.00,*]:有一边不做限制
  11. 特殊字符:使用\转义
  12. Elasticsearch的基本概念
    • 索引:类比SQL中的数据库
    • 文档:json
    • 类型:高版本中已取消
    • 映射:参数设置
    • 节点:一个注解多,多个数据节点
    • 集群:无缝集成集群功能,对等架构。主节点并不比其他节点重要;集群是通过多播请求响应的方式发现彼此
    • 分片:创建后,分片数量无法改变(高版本中取消部分限制)
    • 副本:复制分片(replica)
  13. ES中的管理节点并不比其他节点重要,实践中不需要知道哪个是管理节点,所有操作都可以发送至任意节点,任意节点都可以发送子查询到其他节点,并合并搜索结果。

推荐阅读