首页 > 其他分享 >ES(Elasticsearch)入门-深入索引操作

ES(Elasticsearch)入门-深入索引操作

时间:2024-05-21 14:55:49浏览次数:26  
标签:indexname ## alias1 索引 Elasticsearch 分片 POST ES

1.创建索引

  • 使用PUT 请求。
  • 结构
PUT /${index_name} // 索引名称
{
    "settings":{
    ... 索引相关的配置项目,如何:分配个数 副分片个数等
    },
    "mappings":{
    ... 数据的结构
    }
}

-----------------------------------实例 -------------------------------------
PUT /indexname
{
  "settings": {
    "number_of_shards": 2,  // 指定主分片数
    "number_of_replicas": 2 // 副本分片数
  },
  "mappings": {
    "properties": {
      "name":{
         "type": "text"
      },
      "value":{
        "type": "integer"
      }
    }
  }
}

运行结果

2. 写入稳定

  • 使用 Post 请求
  • 结构
POST /${indexname}/_doc/${Id}
{
  ... 文档数据
}
-----------------------------------实例 -------------------------------------
POST /indexname/_doc/001
{
 "name":"测试_ES",
 "value":1
}

运行结果

3. 查询信息

  • 使用GET 请求
  • 结构
## ID 查询
GET /${indexname}/_doc/${Id}
-----------------------------------实例 -------------------------------------
GET /indexname/_doc/001

运行结果

GET /${indexname}/_search
{
   query:{
     
     ... 查询条件
   }
}
## 一般字段查询 也就是完全匹配
-----------------------------------实例 -------------------------------------
GET /indexname/_search
{
  "query": {
    "term": {
      "value": {
        "value": 1
      }
    }
  }
}

运行结果: 已经进行了打分

## 文本字段搜索  模糊查询
GET /indexname/_search
{
  "query": {
    "match": {
      "name": "_ES"
    }
  }
}

运行结果:

查询结果 已经进行了打分

4 删除索引

  • 使用 DELETE
  • 结构
DELETE /${indexname}
-----------------------------------实例 -------------------------------------
DELETE /indexname
删除结果

5 关闭索引 就是暂时不用 此索引

  • 使用 POST
  • 结构
POST /${indexname}/_close
-----------------------------------实例 -------------------------------------
## 创建索引用 条目1 因为您已经删除索引了
PUT /indexname
{
  "settings": {
    "number_of_shards": 2,  // 指定主分片数
    "number_of_replicas": 2 // 副本分片数
  },
  "mappings": {
    "properties": {
      "name":{
         "type": "text"
      },
      "value":{
        "type": "integer"
      }
    }
  }
}
## 关闭
POST /indexname/_close

## 测试写入 使用 条目2 
关闭文档结果 测试关闭后插入

6 .打开索引

  • 使用Post 请求
  • 结构
POST /${indexname}/_open
-----------------------------------实例 -------------------------------------
POST /indexname/_open
打开结果

7. 创建索引别名 # 关系类型的的数据库有点像 视图Union 表

  • 使用POST
  • 结构
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "${indexname}",
        "alias": "${aliasname}"
        "is_write_index":true //写入这个索引
      }
    },
    {
        "add": {
          "index": "${indexname}",
        "alias": "${aliasname}"
      }
    }
  ]
}
-----------------------------------实例 -------------------------------------
## 在创建一个 索引
PUT /indexname01
{
  "settings": {
    "number_of_shards": 2,  // 指定主分片数
    "number_of_replicas": 2 // 副本分片数
  },
  "mappings": {
    "properties": {
      "name":{
         "type": "text"
      },
      "value":{
        "type": "integer"
      }
    }
  }
}
## 写入一条数据
POST /indexname01/_doc/001
{
 "name":"测试01_ES",
 "value":2
}
POST /indexname/_doc/001
{
 "name":"测试_ES",
 "value":1
}
## 创建别名
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "indexname",
        "alias": "alias1"
      }
    },
     {
      "add": {
        "index": "indexname01",
        "alias": "alias1"
      }
    }
  ]
}
## 测试查询
GET /alias1/_search
{
  "query": {
    "term": {
      "_id": {
        "value": "001"
      }
    }
  }
}
创建别名结果 测试别名查询

7.2 别名索引的写入

## 未设置 is_write_index 情况下
POST /alias1/_doc/002
{
 "name":"测试02_ES",
 "value":3
}
错误信息
## 这是is_wirte_index
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "indexname",
        "alias": "alias1",
        "is_write_index":true
      }
    }
  ]
}
## 写入数据
POST /alias1/_doc/002
{
 "name":"测试02_ES",
 "value":3
}
## 测试查询
GET /alias1/_search
{
  "query": {
    "match": {
      "name": "测试"
    }
  }
}
测试查询结果 02 在indexname 中

7.3 别名替换。为满足上次代码 的动态修改数据里来源

如:一个 log 索引有个 1 主分片,2 个副分片 ,在系统增长时出现查询性能瓶颈,希望 添加多个主分片,及多个副分片,此时就可以用 替换方案

## 接续上文 我们创建一个 索引 indexname03 修改类其主副分片数,创建
PUT /indexname03
{
  "settings": {
    "number_of_shards": 4,  // 指定主分片数
    "number_of_replicas": 4 // 副本分片数
  },
  "mappings": {
    "properties": {
      "name":{
         "type": "text"
      },
      "value":{
        "type": "integer"
      }
    }
  }
}
## 查看一下 alias1 定义
GET /alias1
## 替换到 别名中的 indexname01
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "indexname03",
        "alias": "alias1"
      }
    },
    {
      
      "remove": {
        "index": "indexname01",
         "alias": "alias1"
      }
    }
  ]
}
## 查看一下 alias1 定义
GET /alias1

标签:indexname,##,alias1,索引,Elasticsearch,分片,POST,ES
From: https://www.cnblogs.com/x666-6/p/18204008

相关文章

  • Kubernetes 数据存储:从理论到实践的全面指南
    本文深入解析Kubernetes(K8S)数据存储机制,探讨其架构、管理策略及最佳实践。文章详细介绍了K8S数据存储的基础、架构组成、存储卷管理技巧,并通过具体案例阐述如何高效、安全地管理数据存储,同时展望了未来技术趋势。关注【TechLeadCloud】,分享互联网架构、云服务技术的全......
  • 错误: 找不到或无法加载主类 XXX类 || jmap -histo:live 2345 | less
    今天在学习jvm的时候,想要通过jmap-histo:live20368|less命令查看堆中存活对象信息。但是在windows系统中貌似好像不支持这个命令 于是我将自己的程序上传到了Linux系统中,但是经过编译完了之后,运行该class文件的时候,提示:错误:找不到或无法加载主类XXX类。这个错误的原......
  • The POM for XXX is invalid, transitive dependencies (if any) will not be availab
    1、说明产生这样原因很多,本人工程是公司团队一起做的、模块命名、包命名都不太规范。为了系统和功能可持续使用对项目规范做了修改。   项目名称、模块名及包名都做了重新命名。导致项目编译发生引用冲突。2、根据原因为IDEA缓存本地的与依赖相关文件.iml文件发生冲突引起......
  • mysql中主键、外键、约束、索引
    主键用于唯一标识表中每一行数据,外键用于建立表与表之间关联关系,约束用于限制表中数据的规则,索引用于加速查询。1.主键是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件:主键列的值必须唯一,不能重复。主键列的值不能为......
  • 2024-05-21 Module not found: Error: Can't resolve 'ant-design-vue/dist/antd.css'
    报错:Modulenotfound:Error:Can'tresolve'ant-design-vue/dist/antd.css'in'xxx'原因:引入的antd.css文件实际上应该是reset.css文件,是由于ant-design-vue的官网给的代码和实际下的包的文件不一致导致。解决方案:把import"ant-design-vue/dist/antd.css";改成import"ant......
  • 在Docker中安装PostgreSQL的ODBC驱动并添加Python测试代码
    #使用官方的Ubuntu镜像作为基础镜像FROMubuntu:20.04#设置环境变量以避免交互式安装提示ENVDEBIAN_FRONTEND=noninteractive#更新包列表并安装必要的软件包RUNapt-getupdate&&\  apt-getinstall-y\  build-essential\  unixodbc\  unixo......
  • C#连接Access数据库 查询和新增 示例
    C#连接Access数据库查询和新增示例项目中需要做一个写程序操作日志的需求,仅本机使用。这时Access数据库就是一个非常好的选择,简单,好用。下面仅仅是一个示例,简单写出查询和新增等C#操作Access数据库的代码效果图 clsDBHelperAccess.csusingSystem;usingSystem......
  • C#在DataGridView表格中操作Access数据库
    C#在DataGridView表格中直接添加修改删除数据 效果图 Form1.cs完整代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Dat......
  • form-create-designer中怎么扩展自定义组件
    form-create-designer中怎么扩展自定义组件form-create-designer是基于 @form-create/element-ui实现的表单设计器组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。FormCreate官网:https://www.form-create.com帮助文档:https://pro.form-cr......
  • Codeforces Round 946 (Div. 3)
    CodeforcesRound946(Div.3)总结:赛时状态很好,做出了感觉平常会赛时寄掉但是赛后补题的E,但是也因此花费时间太多,没时间去做更简单的F和G,赛后G用时十分钟AC,F码的有点麻烦,用时40分钟左右,感觉三个小时能AK?A.PhoneDesktop题意:给定3*5的平面,有a个1*1的格子和b个2*2的格子,求完全......