美文网首页
Elasticsearch实战 第二章 深入功能

Elasticsearch实战 第二章 深入功能

作者: kaiker | 来源:发表于2021-11-27 15:14 被阅读0次

    1、逻辑设计

    索引-类型-ID的组合唯一确定了ES中的某篇文档

    逻辑设计

    文档

    • 最小的索引单位是文档
    • 同时包含字段和字段的取值
    • 可以是层次型的
    • 不依赖预先定义的模式
    • ES中的文档是无模式的,并非所有文档都需要有相同的字段

    类型

    • 类型是文档的逻辑容器,类似表格
    • 每个类型中字段的定义称为映射,如name字段映射为string,geolocation字段映射为geo_point
    • 最安全的方式是索引数据之前,定义好需要的映射

    索引

    • 类似于数据库,是独立的大量文档集合
    • 每个索引有refresh_interval,根据设置的间隔进行刷新,不会更新一个文档就刷新一次

    2、物理设计

    一个节点是一个运行的ES进程,一份主分片是一块索引,一个索引通常由5个主分片组成

    节点

    一个节点是一个ES的实例

    • 通过hash选择索引的一个分片,发送到后会进行备份
    • 搜索的时候也是随机在节点上访问,节点之间是透明的
    索引一篇文档的过程

    分片

    一份分片是Lucene索引,一个包含倒排索引的文件目录;ES索引由多个Lucene索引构成

    Lucene索引

    集群中分发分片

    • 随着越来越多的节点添加,现有分片将在所有节点中进行负载均衡。

    分布式索引和搜索

    索引已经在前面提到过,hash来选分片
    搜索使用round-robin轮训机制选择可用分片,并将搜索请求转发过去

    3、索引新数据

    通过cURL索引

    % curl -XPUT 'localhost:9200/get-together/group/1?pretty' -d '{
      "name":"ES Denver",
      "organizer":"Lee"
    }'
    

    创建索引和映射类型

    • 获取映射,访问_mapping端点
    curl 'localhost:9200/get-together/_mapping/group?pretty'
    
    返回的内容

    4、搜索数据

    • 通过_search端点进行搜索
    % curl "localhost:9200/get-together/group/_search?q=sample&pretty"
    

    回复的内容

    图片.png
    • took 消耗的时间,单位是毫秒
    • shards 返回的是分片信息
    • hits展示了每个匹配文档的索引、类型、ID、得分、_source信息

    搜索

    curl 'localhost:9200/get-together/group/_search?pretty' -d '{
      "query": {
        "query_string":{
          "query":"",
          "default_field":"name",
          "default_operator":"AND"
        }
      }
    }'
    
    curl 'localhost:9200/get-together/group/_search?pretty' -d '{
      "query": {
        "term":{
          "name":""
        }
      }
    }'
    
    // 不会返回得分
    curl 'localhost:9200/get-together/group/_search?pretty' -d '{
      "query": {
        "filtered":{
          "filter":{
            "term":{
              "name":"elasticsearch"
             }
           }
        }
      }
    }'
    

    5、配置ES

    elasticsearch.yml中指定集群名称

    • config/ 中存储ES的主要配置文件

    logging.yml指定详细日志记录

    • cluster-name.log 主要日志
    • cluster-name_index_indexing_slowlog.log 慢搜索日志
    • cluster-name_index_indexing-slowlog.log 慢索引日志

    调整JVM设置

    • ES在一个JVM中运行
    • ES使用的大部分内存称为堆,默认分配256MB初识内存,最多扩展至1GB
    • export ES_HEAP_SIZE=500m; bin/elsasticsearch 可以调整

    相关文章

      网友评论

          本文标题:Elasticsearch实战 第二章 深入功能

          本文链接:https://www.haomeiwen.com/subject/prnfxrtx.html