ElasticSearch漫游 (3.索引库操作)

索引库是Elasticsearch的核心概念,用于存储、索引和搜索文档数据。它类似于数据库中的表,文档以JSON格式存储,并通过映射定义字段约束。索引库使用倒排索引实现快速搜索,且支持分片和复制以提高性能和容错性。
摘要由CSDN通过智能技术生成

什么是索引库

它有点类似于mysql里面的表:
索引库的操作 也就 有点类似于表操作

在Elasticsearch (ES) 中,“索引”(Index)是指一种数据结构,用于存储和组织文档数据的集合。索引库(Index)是
Elasticsearch 中的一个核心概念,它类似于关系型数据库中的数据库或表的概念。

索引库在 Elasticsearch
中用于存储、索引和搜索文档数据。它是由一个或多个分片(shard)组成的逻辑容器。每个分片都是一个独立的工作单元,它包含索引的一部分数据,并负责处理与该数据相关的搜索和存储操作。

索引库在 Elasticsearch 中有以下特征和作用:

存储:索引库用于持久化存储文档数据。文档可以是以 JSON(JavaScript Object Notation)格式表示的任何结构化数据。

索引:索引库会对文档的字段进行索引,以便能够高效地进行搜索和检索操作。索引使用倒排索引(Inverted
Index)的数据结构,以提供快速的全文搜索能力。

分片和复制:索引库可以被分为多个分片,并且每个分片可以有多个副本。分片和副本提供了数据的分布和冗余机制,以提高性能、可用性和容错性。

映射:索引库可以定义字段的映射,指定字段的数据类型和属性。映射定义了索引库如何解析和处理文档中的字段。

搜索:索引库支持各种类型的搜索操作,包括全文搜索、过滤、聚合和排序等。通过使用 Elasticsearch 提供的查询语言和
API,可以执行复杂的搜索操作。

总之,索引库是 Elasticsearch 中用于存储和组织文档数据的核心概念,提供了高效的搜索和检索能力。它是构建
Elasticsearch 数据存储和搜索应用程序的基础。

就像数据库里面你先要有表才能往里面插入数据一样, ES中你得先有索引库才能往里面插入文档数据。


mapping 属性

索引库创建的关键 首先是定义mapping映射, 它是对ES文档的约束。
新手会好奇 既然要约束一个文档,那它有哪些属性可以约束呢?

在ES官方文档中 约束非常多 大家没必要都去死记硬背,遇到查询就好了。

这里介绍一些比较常见的:

  • type 字段数据类型 常见的简单类型有:
    字符串:text(常见的可分词文本), keyword(精确值,不可分词的文本,比如国家名称 人名 品牌名)
    数值类型:long integer short byte double float
    布尔值:boolean
    日期:date
    对象:object


  • index:是否创建倒排索引 默认为true


  • analyzer:分词器(一般只针对text)

  • properties:该字段的子字段

创建索引库

创建索引库的语法 总体上一个json结构,通过上面的mapping属性来定义你的文档里面有哪些字段 有哪些内容,就像sql里面建表一样。

我们先实践 自己照着创建一个:

PUT /starcraft2
{
  "mappings": {
    "properties": {
     
      "info":{
        "type": "text",
        "analyzer": "ik_smart"
      }, 
      "email":{
        "type":"keyword",
        "index":false  
      },
      "name":{
        "type": "object",
        "properties": {
          "firstName":{
            "type":"keyword"
          },
          "lastName":{
            "type":"keyword"
          }
        } 
      }
    }
  }
}

我们创建了一个索引库 定义了3个字段,每个字段都有它的属性和约束,我们的name字段 是object 它还有两个子字段,

这个过程是不是优点类似于数据库建表的感觉。

只不过我们这里是半结构化的数据

查看索引库

GET /库名

修改索引库

ES是不允许修改索引库的,因为这样会使得 倒排索引失效。

那我某个字段建错了 要改怎么办呢?

ES不能改现有字段,但是ES允许你添加新字段(不能和之前的字段重复)

比如给上面刚刚创建的那个库加个字段:

PUT /starcraft2/_mapping
{
  "properties":{
    
     "age":{
       "type":"integer"
     }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值