当前位置: 首页 > article >正文

ES索引知识

索引是数据的载体,存储了文档和映射的信息

索引是具有相同结构的文档的合集体。
设置索引,不仅仅是设置索引名字,还有索引的一些配置,比如:分片和副本,刷新频率,搜索结果的最大参数,索引映射和别名。

{
  // 索引的设置部分
  "settings": {
    // 索引级别的设置
    "index": {
      // 设置索引的主分片数量,通常在创建索引后不可更改
      "number_of_shards": 3,
      // 设置每个主分片的副本数量,可以在创建索引后动态调整
      "number_of_replicas": 1,
      // 设置索引的刷新频率,这里设置为每秒刷新一次
      "refresh_interval": "1s",
      // 设置搜索结果的最大窗口大小,限制单次搜索返回文档的数量
      "max_result_window": 10000
    }
  },
  // 索引的映射部分,定义文档字段的类型和属性
  "mappings": {
    "properties": {
      // 定义一个文本字段,用于全文搜索
      "title": {
        "type": "text",
        // 子字段,用于不分词的精确匹配
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      // 定义另一个文本字段,用于存储文章内容
      "content": {
        "type": "text"
      },
      // 定义日期字段,用于存储发布日期
      "publish_date": {
        "type": "date"
      },
      // 定义关键字字段,用于存储作者名字,通常用于过滤和聚合
      "author": {
        "type": "keyword"
      }
    }
  },
  // 索引的别名部分,为索引设置一个或多个别名
  "aliases": {
    // 设置一个别名,可以通过别名来操作索引
    "myindexalias": {}
  }
}

动态设置(修改)索引设置

// 动态设置刷新间隔
PUT /my_index/_settings
{
  "index": {
    "refresh_interval": "1s" // 每秒刷新一次
  }
}

// 动态设置副本数量
PUT /my_index/_settings
{
  "index": {
    "number_of_replicas": 2 // 更改副本数量为2
  }
}

索引别名

  1. 无缝滚动索引(在线无缝切换索引)
    索引别名可以用来实现无缝滚动索引,这意味着可以在不中断服务的情况下替换旧的索引。例如,你可以每天创建一个新的索引来存储当天的数据,并使用别名来指向当前的索引。当需要切换到新索引时,只需将别名重新指向新的索引即可。
  2. 多索引检索
    将多个索引A和B别名设置成相同的C,那么使用这个索引别名C就能应用到两个A和B索引上,相当于一个视图。

索引模板

解决的问题:

  1. 数据量非常大,需要对索引的生命周期进行管理,要按照日期划分索引,这就要求多个索引的mapping相同,那么每次创建mapping都很麻烦。
  2. 数据业务中有多个相同mapping的索引(因为想要跨索引查询),那么如何保证这些mapping相同呢?
索引模板的定义
普通完全模板
{
  "index_patterns": ["myindex-*"], // 匹配所有以myindex-开头的索引
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "timestamp": {
        "type": "date"
      },
      "user": {
        "type": "keyword"
      },
      "message": {
        "type": "text"
      }
    }
  },
  "aliases": {
    "myindex-read": {}, // 为索引创建一个别名
    "myindex-write": {} // 为索引创建另一个别名
  }
}
组件模板

组件模板 - 设置

{
  "template": {
    "settings": {
      "number_of_shards": 3
    }
  },
  "priority": 10
}```
这个组件模板定义了索引的分片数,并且设置了优先级为10。

**组件模板 - 映射**
```PUT _component_template/component_mappings_example
{
  "template": {
    "mappings": {
      "properties": {
        "user": {
          "type": "keyword"
        }
      }
    }
  }
}

这个组件模板定义了索引的映射,包括一个user字段。

组件模板 - 别名

{
  "template": {
    "aliases": {
      "myindex-read": {}
    }
  }
}

这个组件模板定义了一个别名myindex-read。
使用组件模板创建完全模板
现在,我们可以使用上面定义的组件模板来创建一个完全模板:

{
  "index_patterns": ["myindex-*"],
  "composed_of": ["component_settings_example", "component_mappings_example", "component_aliases_example"],
  "priority": 1
}

http://www.kler.cn/a/578882.html

相关文章:

  • Java8新特性
  • 【JavaSE】【IO】文件操作
  • windows部署spleeter 版本2.4.0:分离音频的人声和背景音乐
  • 【Linux】缓冲区
  • P9425 [蓝桥杯 2023 国 B] AB 路线(无结构体+取模判断+详细注释版)
  • 【Python机器学习】1.9. 逻辑回归实战(进阶):建立二阶边界模型
  • 批量合并 Word 文档,支持合并成一个 Word,也支持按文件夹合并
  • 【贪心算法】柠檬水找零
  • 6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用
  • 智科 机器学习毕业设计题目指导
  • 通义万相2.1开源版本地化部署攻略,生成视频再填利器
  • MongoDB winx64 msi包安装详细教程
  • 深入剖析Android Service:原理、生命周期与实战应用
  • 点云从入门到精通技术详解100篇-基于深度学习的三维点云分类分割
  • 实战1. 利用Pytorch解决 CIFAR 数据集中的图像分类为 10 类的问题
  • Codeforces Round 305 (Div. 1) C. Mike and Foam 容斥原理、质因数分解
  • ACE协议学习1
  • 【python爬虫】酷狗音乐爬取
  • JavaWeb后端基础(7)AOP
  • 用K8S部署Milvus服务