• ELasticsearch


    Field datatype
      string类型
        ELasticsearch 5.X之后的字段类型不再支持string,由text或keyword取代
      text类型
        当一个字段是要被全文搜索的,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项
      keyword类型
        keyword类型适用于索引结构化的字段,keyword类型的字段只能通过精确值搜索到

      数字类型

        long等等

      Object类型

        JSON

      date类型
        JSON中没有日期类型,所以在ELasticsearch中,日期类型可以是字符串、long

      range类型

       Array类型

        数组第一个值的类型就是整个数组的类型

      nested类型

        nested嵌套类型是object中的一个特例,可以让array类型的Object独立索引和查询

           geo point 类型

        坐标

      binary类型
      ip类型
      token_count类型

    Meta-Fields
    _all
    定义
    _all字段是把其它字段拼接在一起的超级字段,所有的字段用空格分开,_all字段会被解析和索引,但是不存储
    使用copy_to自定义_all字段 

    _field_names
    _field_names字段用来存储文档中的所有非空字段的名字,这个字段常用于exists查询

    _routing(路由参数)
    路由公式:
    ELasticsearch通过以下公式计算文档应该分到哪个分片上:
    shard_num = hash(_routing) % num_primary_shards
    说明
    1 索引时指定routing参数,查询时才能在指定路由上查询
    2 如果分片的数量改变了,所有先前的路由值就会变成非法了,文档相当于丢失了
    3 Elasticsearch有一个默认的路由算法:它会将文档的ID值作为依据将其哈希到相应的主分片上,这种算法基本上会保持所有数据在所有分片上的一个平均分布,而不会产生数据热点。
    4 默认路由的问题:Elasticsearch使用文档的ID将文档平均的分布于所有的分片上,这导致了Elasticsearch不能确定文档的位置,所以它必须将这个请求广播到所有的所有分片上去执行

    _source
    存储的文档的原始值
    _type
    文档类型
    _index
    多索引查询时,有时候只需要在特地索引名上进行查询,_index字段提供了便利,也就是说可以对索引名进行term查询、terms查询、聚合分析、使用脚本和排序。
    _parent
    _parent用于指定同一索引中文档的父子关系

    Mapping参数
    analyzer
    相关概念
    全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器);这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词)
    ES内置若干analyzer, 另外还可以用内置的character filter, tokenizer, token filter组装一个analyzer

    指定分词器(分析器更合理),对索引和查询都有效

    "analysis": {
    "analyzer": {
    "ik_smart_pinyin": {
    "type": "custom",
    "tokenizer": "ik_smart",
    "filter": [
    "my_pinyin",
    "word_delimiter"
    ]
    },
    "ik_max_word_pinyin": {
    "type": "custom",
    "tokenizer": "ik_max_word",
    "filter": [
    "my_pinyin",
    "word_delimiter"
    ]
    }
    },
    "filter": {
    "my_pinyin": {
    "type": "pinyin",
    "keep_separate_first_letter": true,
    "keep_full_pinyin": true,
    "keep_joined_full_pinyin": true,
    "keep_none_chinese_in_joined_full_pinyin": true,
    "keep_original": true,
    "limit_first_letter_length": 16,
    "lowercase": true,
    "remove_duplicated_term": true
    }
    }
    }

    boost

    doc_values
    doc_values是为了加快排序、聚合操作,在建立倒排索引的时候,额外增加一个列式存储映射,是一个空间换时间的做法。默认是开启的,对于确定不需要聚合或者排序的字段可以关闭。

    norms
    norms参数用于标准化文档,以便查询时计算文档的相关性。norms虽然对评分有用,但是会消耗较多的磁盘空间,如果不需要对某个字段进行评分,最好不要开启norms。

    Elasticsearch应用

    ELK

    E 就是 Elasticsearch,L 是 Logstash,是一个日志收集系统,K 是 Kibana,是一个数据可视化平台。

    Windows环境安装

    一 ******安装 es 5.4.2******
    https://www.cnblogs.com/tonqiang/archive/2017/07/14/7087807.html

    二 ******安装分词器*******
    IK分词
    1 下载。ik分词链接GitHub。由于ik分词器要求与Elasticsearch的版本高度匹配,所以我们需要下载相应的版本为5.4.2。
    git下载 git clone --branch v5.4.2 https://github.com/medcl/elasticsearch-analysis-ik.git
    2 打包mvn clean install -Dmaven.test.skip=true
    3 解压
    D:\elasticsearch\ik\elasticsearch-analysis-ik\target\releases 生成的elasticsearch-analysis-ik-5.4.2.zip
    解压到D:\elasticsearch\elasticsearch-5.4.2\plugins\ik

    拼音分词
    1, 下载(https://github.com/medcl/elasticsearch-analysis-pinyin/releases 5.4.2下载源码包
    2 打包mvn clean install -Dmaven.test.skip=true
    3 解压
    D:\elasticsearch\pinyin\elasticsearch-analysis-pinyin-5.4.2\target\releases 生成的elasticsearch-analysis-pinyin-5.4.2.zip
    解压到D:\elasticsearch\elasticsearch-5.4.2\plugins\pinyin

    三 ******启动******
    本地
    cd D:\elasticsearch\elasticsearch-5.4.2\bin
    运行 elasticsearch.bat
    cd D:\elasticsearch\elasticsearch-head\elasticsearch-head
    运行 npm run start
    http://localhost:9200/
    http://localhost:9100/

  • 相关阅读:
    计算fibonacci数(多种方法)
    数组求和(两种方法)
    C语言二级指针(指向指针的指针)
    唯品会海量实时OLAP分析技术升级之路
    hive 调优(一)coding调优
    supsplk 服务器被植入木马 挖矿 cpu使用 700%
    OPTS参数设置
    Yarn 内存分配管理机制及相关参数配置
    hive on tez 任务失败
    hive 调优(三)tez优化
  • 原文地址:https://www.cnblogs.com/ai464068163/p/16357166.html
Copyright © 2020-2023  润新知