zoukankan      html  css  js  c++  java
  • 读《深入理解Elasticsearch》点滴-基础概念

    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中的管理节点并不比其他节点重要,实践中不需要知道哪个是管理节点,所有操作都可以发送至任意节点,任意节点都可以发送子查询到其他节点,并合并搜索结果。
  • 相关阅读:
    TensorFlow_CNN_MNIST遇到的问题
    TensorFlow_CNN_MNIST问题
    TensorFlow_CNN内tf.nn.max_pool和tf.layers.max_pooling2d参数
    TensorFlow_CNN内tf.nn.conv2d和tf.layers.conv2d参数
    mysql 更新语句中加判断条件
    数据库 数据去重并取id最大的数据sql
    elasticsearch------java操作之QueryBuilders构建搜索Query
    Elasticsearch java api 基本搜索部分详解
    java 连接 elasticsearch 报错java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials 解决
    java 获取文件内所有文件名
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/8591695.html
Copyright © 2011-2022 走看看