ElasticSearch学习笔记

Elasticsearch核心概念与操作

一.ES核心概念

elasticsearch 是面向文档的,一切都是 Json

ES关系型数据库的对比记忆:

ElasticSearch 关系型数据库
索引(indices) 数据库(database)
类型(types) 表(tables)
文档(documents) 行(rows)
字段(fields) 列(columns)

elasticsearch(集群)中可以包含多个索引(数据库),每个索引中包含多个类型(表),每个类型中包含多个文档(行),每个文档中包含多个字段(列)。
几个相关概念:

概念 说明
indices(索引库) indices是index的复数,代表许多的索引,
type(类型) 类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
document(文档) 存入索引库原始的数据。比如每一条商品信息,就是一个文档
field(字段) 文档中的属性
mappings(映射配置) 字段的数据类型、属性、是否索引、是否存储等特性
node(节点) 节点就是es实例
cluster(集群) 一个集群有多个节点
shard(分片) 索引分片,es将一个完整的索引分为多个分片
replica(副本) 每个shard可以设置一定数量的副本,写入的文档同步给副本,副本可以提供查询功能,分摊系统的都负载

mapping支持的属性:

  • enabled:仅存储、不做搜索和聚合分析

    • "enabled":true (缺省)| false
      
  • index:是否构建倒排索引(即是否分词,设置false,字段将不会被索引)

    • "index": true(缺省)| false
      
  • index_option:存储倒排索引的哪些信息

    • "index_options": "docs"
      
      # 4个可选参数
          # docs:索引文档号
          # freqs:文档号+词频
          # positions:文档号+词频+位置,通常用来距离查询
          # offsets:文档号+词频+位置+偏移量,通常被使用在高亮字段
      # 分词字段默认时positions,其他默认时docs
      
  • norms:是否归一化相关参数、如果字段仅用于过滤和聚合分析、可关闭

    • "norms": {"enable": true, "loading": "lazy"}
      
      # 分词字段默认配置,不分词字段:默认{“enable”: false},存储长度因子和索引时boost,建议对需要参加评分字段使用,会额外增加内存消耗
      
  • doc_value:是否开启doc_value,用户聚合和排序分析

    • "doc_value": true(缺省)| false
      
      # 对not_analyzed字段,默认都是开启,分词字段不能使用,对排序和聚合能提升较大性能,节约内存
      
  • fielddata:是否为text类型启动fielddata,实现排序和聚合分析

    • "fielddata": {"format": "disabled"}
      
      # 针对分词字段,参与排序或聚合时能提高性能,不分词字段统一建议使用doc_value
      
  • store:是否在_source之外再独立存储一份,默认不存储。(因为_sourse已经存储了所有的字段)

    • "store": false(默认)| true
      
  • coerce:是否开启自动数据类型转换功能,比如:字符串转数字,浮点转整型

    • "coerce: true(缺省)| false"
      
  • multifields:灵活使用多字段解决多样的业务需求

  • dynamic:控制mapping的自动更新,(慎用!)

    • "dynamic": true(缺省)| false | strict
      
  • data_detection:是否自动识别日期类型

    • data_detection:true(缺省)| false
      
  • analyzer:指定分词器,默认分词器为standard analyzer

    • "analyzer": "ik"
      
  • boost:字段级别的分数加权,默认值是1.0 (5.0.0版本之后废弃)

    • "boost": 1.23
      
  • fields:可以对一个字段提供多种索引模式,同一个字段的值,一个分词,一个不分词

    • "fields": {"raw": {"type": "string", "index": "not_analyzed"}}
      
  • ignore_above:超过100个字符的文本,将会被忽略,不被索引

    • "ignore_above": 100
      
  • include_in_all:设置是否此字段包含在_all字段中,默认时true,除非index设置成no

    • "include_in_all": true
      
  • null_value:设置一些缺失字段的初始化,只有string可以使用,分词字段的null值也会被分词

    • "null_value": "NULL"
      
  • position_increament_gap:影响距离查询或近似查询,可以设置在多值字段的数据上或分词字段上,查询时可以指定slop间隔,默认值时100

    • "position_increament_gap": 0
      
  • search_analyzer:设置搜索时的分词器,默认跟analyzer是一致的,比如index时用standard+ngram,搜索时用standard用来完成自动提示功能

    • "search_analyzer": "ik"
      
  • similarity:默认时TF/IDF算法,指定一个字段评分策略,仅仅对字符串型和分词类型有效

    • "similarity": "BM25"
      
  • trem_vector:默认不存储向量信息,支持参数yes(term存储),with_positions(term+位置),with_offsets(term+偏移量),with_positions_offsets(term+位置+偏移量)对快速高亮fast vector highlighter能提升性能,但开启又会加大索引体积,不适合大数据量用

    • "trem_vector": "no"
      

mapping字段设置流程:
在这里插入图片描述

物理设计:

elasticsearch 在后台把每个索引划分为多个分片,每个分片可以在集群中的不同服务器间迁移。

要注意的是:Elasticsearch 本身就是分布式的,因此即便你只有一个节点,Elasticsearch 默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

什么时候会触发分片?

  • 创建或者删除索引
  • 修改replica
  • 再均衡
  • 增减节点

逻辑设计:

elasticsearch 是面向文档的,所以在查找时,文档就是最小单位。当在索引中查找一个文档时,顺序为:索引 -> 类型 -> 文档ID,这里的文档ID是一个字符串,所以不必是整数。

倒排索引

<
博客文章(原始数据) 索引列表(倒排索引)
博客文章id 标签 标签 博客文章id
1 python python 1, 2, 3
2 python
elasticsearch 学习笔记包括以下内容: 一、Elasticsearch概述: - Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于快速搜索、分析和存储大量的结构化和非结构化数据。 - Elasticsearch与Solr相比有一些区别,包括用户、开发和贡献者社区的规模和成熟度等方面。 二、Elasticsearch安装: 1. 下载Elasticsearch,可以从官方网站或华为云镜像下载。 2. 安装Elasticsearch。 三、安装head插件: - head插件是一个可视化的管理界面,可以方便地管理和监控Elasticsearch集群。 四、安装Kibana: 1. Kibana是一个开源的数据可视化工具,用于展示和分析Elasticsearch中的数据。 2. 下载Kibana并安装。 3. 启动Kibana并进行访问测试。 4. 可选的汉化操作。 五、ES核心概念理解: - 学习ES的核心概念,包括索引、文档、映射、查询等。 以上是elasticsearch学习笔记的主要内容,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch 学习笔记(上)](https://blog.youkuaiyun.com/m0_52691962/article/details/127064350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值