07 mapping索引操作
版本
ElasticSearch version "number": "7.14.1"
获取健康值
GET _cat/health?v
获取所有索引的信息
GET _cat/indices?v

创建索引
创建方式
- 创建一个索引!
PUT /索引名/~类型名~/文档id
类型名以后到8版本就没有了
PUT /test1/type1/1
{
"name":"haima",
"age":2
}
- 创建一个索引!
PUT /索引名/~类型名~/文档id
建 索引规则 和 字段的类型,不填入数据内容
es6版本需要加type,
es7版本就不需要加type了,es7一个文档里只有一个类型(_doc)(相当于mysql里只有一张表)。
PUT /test1/type1/1
{
"name":"haima",
"age":2
}
- 查看数据

完成了自动增加了索引,数据也成功的添加了,这就是我说大家在初期可以把它当做数据库学习的原因!
- 那么name这个字段用不用指定类型呢。毕竟我们关系型数据库是需要指定类型的啊
- 字符串类型
text,keyword - 数值类型
long,integer,short,byte,double,float,half_float,scaled_float - 日期类型
date - 布尔值类型
boolean - 二进制类型
binary - 等等
更多详情看下面的文章
官网地址:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
es 数据类型:
https://blog.csdn.net/liuxiao723846/article/details/109099508
1. 自动推导
# 创建一条id为1记录 没有会自动创建索引,字段类型会自动推导
PUT users/_doc/1
{
"id" : 1,
"name" : "lisi",
"height" : 184.5,
"age" : 32,
"state" : true,
"created_at" : "2022-05-02 18:50:49",
"updated_at" : "2022-05-02 18:50:49"
}
2. 自定义
# mappings信息=======================================
# 创建test3索引
# mapping number_of_shards分片数
# number_of_replicas版本数
# mappings GET users/_mapping获取mappings字段内容后修改
# 创建users索引
PUT users
{
"settings":{
"number_of_shards":1,
"number_of_replicas":0
},
"mappings":{
"properties":{
"age":{
"type":"long"
},
"height":{
"type":"float"
},
"id":{
"type":"long"
},
"name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"state":{
"type":"boolean"
},
"created_at":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd ||HH:mm:ss ||epoch_millis"
},
"updated_at":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd ||HH:mm:ss ||epoch_millis"
}
}
}
}
判断索引是否存在
uesrs索引是否存在
HEAD /users
新增字段
# 给users新增一个skuNumber字段,执行下面的命令即可修改mapping。
PUT users/_mapping
{
"properties":{
"skuNumber":{
"type":"keyword"
}
}
}
## ES更新mapping-新增字段
## 多个索引,英文逗号隔开
## 更多操作方式参考文档
## https://blog.csdn.net/keketrtr/article/details/124751920?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124751920-blog-110622091.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124751920-blog-110622091.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1
curl -X PUT "127.0.0.1:9200/_test1,user/_mapping?pretty" -H 'Content-Type: application/json' -d'
{"properties":{"geoip3":{"dynamic":"true","properties":{"industry":{"norms":false,"type":"text","fields":{"raw":{"ignore_above":32765,"type":"keyword"}}}}}}}'
curl -X PUT "127.0.0.1:9200/test2/_mapping?pretty" -H 'Content-Type: application/json' -d'
{
"properties":{
"industry":{
"type": "keyword"
}
}
}'
新增记录
## 新增记录
PUT users/_doc/1
{
"skuNumber":"1234"
}
# 新增pushTime字段后,历史数据是没有默认值的。
# 场景一:因为es索引结构特性,当我们对现有索引新增字段时,历史数据并不会有默认值
# 场景二:新增记录时,如果没有写入这个字段值时,也不会有默认值
# 所以有时我们需要给历史数据设置认值,
# 设置默认值时,如果历史数据的此字段已经有值,不会被修改,只会对无值的数据进行修改。
# 设置默认值后,再写入数据新数据,如果此字段没有给值,依然会是null值
# 以命令为指定type类型为_doc的记录 修改默认值为1332466578
POST users/_doc/_update_by_query
{
"script": {
"lang": "painless",
"source": "if (ctx._source.pushTime== null) {ctx._source.pushTime= 1332466579}"
}
}
查询记录
# 获取users id=1的信息
GET users/_doc/1
# 获取users所有信息
GET users/_doc/_search
GET users/_search
# 获取users中有多少条数据
GET users/_count
//查所有信息 查所有索引
GET _search
{
"query": {
"match_all": {}
}
}
# 获取test2所有信息
GET /test2/_doc/_search
# 查所有信息 查索引kibana_sample_data_flights
GET /kibana_sample_data_flights/_search
{
"query": {
"match_all": {}
}
}
# 查所有信息 查多个索引,用逗号隔开
GET /users,kibana_sample_data_flights/_search
{
"query": {
"match_all": {}
}
}
获取mapping信息
请求
GET users/_mapping?pretty
GET test2
返回数据
{
"test2" : {
"aliases" : { },
"mappings" : {
"properties" : {
"age" : {
"type" : "long"
},
"birthday" : {
"type" : "date"
},
"name" : {
"type" : "text"
}
}
},
"settings" : {
"index" : {
"creation_date" : "1609688493459",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "lm-IkU7QTsifdLdxyXgwgw",
"version" : {
"created" : "7030199"
},
"provided_name" : "test2"
}
}
}
}

或者
http://192.168.0.177:9200/test3/_mapping?pretty
{
"test3": {
"mappings": {
"properties": {
"age": {
"type": "long"
},
"birth": {
"type": "date"
},
"height": {
"type": "long"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
返回
{
"users" : {
"mappings" : {
"properties" : {
"age" : {
"type" : "long"
},
"created_at" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"height" : {
"type" : "float"
},
"id" : {
"type" : "long"
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"state" : {
"type" : "boolean"
},
"updated_at" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
删除索引
curl -XDELETE '127.0.0.1:9200/users'
添加别名
curl -XPOST '127.0.0.1:9200/_aliases' -H 'Content-Type: application/json' -d '{"actions" : [{"add" : {"index" : "student" , "alias" : "student02"}}]}'
查看别名
curl -XGET '127.0.0.1:9200/fofapro_subdomain_cert2/_alias/*'
更新多参考文档:
es之索引的别名操作:
http://t.zoukankan.com/chong-zuo3322-p-13674651.html
索引备份数据
先建好相同mapping的新索引,再用reindex命令备份数据到新索引
es 的reindex详解
从 old_index 复制数据到 new_index 索引
size //可选,每次批量提交1000个,可以提高效率,建议每次提交5-15M的数据
curl -XPOST '127.0.0.1:9200/_reindex' -H 'Content-Type: application/json' -d '
{
"source":{
"index":"old_index",
"size":1000
},
"dest":{
"index":"new_index"
}
}
'
https://blog.csdn.net/goxingman/article/details/103734747
分词器
GET _analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
GET _analyze
{
"analyzer": "ik_smart",
"text": ["我是中国人"]
}
数据字段类型
目录
1 核心数据类型
1.1 字符串类型 - string(不再支持)
1.1.1 文本类型 - text
1.1.2 关键字类型 - keyword
1.2 数字类型 - 8种
1.3 日期类型 - date
1.4 布尔类型 - boolean
1.5 二进制型 - binary
1.6 范围类型 - range
2 复杂数据类型
2.1 数组类型 - array
2.2 对象类型 - object
2.3 嵌套类型 - nested
2.3.1 对象数组是如何存储的
2.3.2 用nested类型解决object类型的不足
3 地理数据类型
3.1 地理点类型 - geo point
3.2 地理形状类型 - geo_shape
4 专门数据类型
4.1 IP类型
4.2 计数数据类型 - token_count
参考资料
版权声明
更新数据类型参考:
https://www.cnblogs.com/shoufeng/p/10692113.html
https://blog.csdn.net/liuxiao723846/article/details/109099508
PUT /test2
{
"mappings": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd ||HH:mm:ss ||epoch_millis"
}
}
}
}
POST _bulk
{"index":{"_index":"test2","_type":"_doc","_id":1}}
{ "date": "2022-01-02" }
{"index":{"_index":"test2","_type":"_doc","_id":2}}
{ "date": "12:00:00" }
{"index":{"_index":"test2","_type":"_doc","_id":3}}
{ "date": "1420070400001" }
{"index":{"_index":"test2","_type":"_doc","_id":4}}
{ "date": "2018-10-01 12:00:00" }
# 复杂数据类型
# es支持复杂的数据类型,包括:object、array、nested。用的不是很多,举个实例:
PUT /test4
{
"settings":{
"number_of_shards":1,
"number_of_replicas":0
},
"mappings":{
"properties":{
"manager":{
"properties":{
"age":{
"type":"long"
},
"name":{
"properties":{
"first":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"last":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
},
"region":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
PUT /test4/_doc/1
{
"region": "US",
"manager": {
"age": 30,
"name": {
"first": "John",
"last": "Smith"
}
}
}
GET /test4/_mapping?pretty
GET /test4/_doc/1
DELETE /test4
#存储方式:
{
"region": "US",
"manager.age": 30,
"manager.name.first": "John",
"manager.name.last": "Smith"
}
07 mapping索引操作的更多相关文章
- Elasticsearch-PHP 索引操作(转)
索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...
- Elasticsearch-PHP 索引操作
索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...
- ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询
基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...
- ES入门三部曲:索引操作,映射操作,文档操作
ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...
- Mongodb学习笔记三(Mongodb索引操作及性能测试)
第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...
- ElasticSearch+Kibana 索引操作
ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...
- Mysql之表的操作与索引操作
表的操作: 1.表的创建: create table if not exists table_name(字段定义); 例子: create table if not exists user(id in ...
- 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器
1 Lucene卡发包结构分析 包名 功能 org.apache.lucene.analysis Analysis提供自带的各种Analyzer org.apache.lucene.colla ...
- Tensor索引操作
#Tensor索引操作 ''''' Tensor支持与numpy.ndarray类似的索引操作,语法上也类似 如无特殊说明,索引出来的结果与原tensor共享内存,即修改一个,另一个会跟着修改 ''' ...
- SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁
死锁概述 对于数据库中出现的死锁,通俗地解释就是:不同Session(会话)持有一部分资源,并且同时相互排他性地申请对方持有的资源,然后双方都得不到自己想要的资源,从而造成的一种僵持的现象.当然,在任 ...
随机推荐
- 使用Dockerfile部署springboot打包jar包
1.docker下载JDK1.8镜像 docker pull java:8 2.进行需要编译的镜像文件目录编写Dockerfile文件 #依赖的父镜像FROM java:8#作者MAINTAINER ...
- KingbaseES V8R6 集群中复制槽非活跃状态的可能原因
背景 此问题环境是一主五备物理集群,其中node1是主节点,node2,3是集群同步节点,node4,5是集群异地异步节点,由于异地和主节点不同网段,网速非常慢. kdts-plus工具纯迁数据,每分 ...
- Kingbase ES 游标跨事务及其案例一则
前言 本文介绍游标在PLSQL和SQL层跨事务使用案例,及其案例一则. 本文验证版本: db0=# select version(); db0-# / version ---------------- ...
- pymysql连接、关闭、查询,python如何操作mysql数据库
1 def get_conn(): 2 """ 3 :return: 连接,游标 4 """ 5 # 创建连接 6 conn = pymys ...
- 高德地图和echarts结合实现地图下钻(一)
疫情大屏优化-ECharts 地图下钻功能实现 https://www.sohu.com/a/373917631_100123073 全国:100000 北京:110 ...
- 【Learning eBPF-2】eBPF 的“Hello world”
前一章讲了 eBPF 为什么这么吊,不理解没关系,现在开始,我们通过一个 "Hello world" 例子,来真正入门一下. BCC Python 框架是上手 eBPF 的最友好方 ...
- Makefile 常用命令详解
在软件开发中,Makefile是一种非常常用的自动化工具.Makefile文件包含了一系列规则,用于编译.打包.测试等操作,可以帮助我们自动化这些操作,提高项目的管理和编译效率.本文将介绍Makefi ...
- C# \n与\\n区别
\n是换行符:\\n第一个\是转义字符,也就是说,\\n在屏幕上显示\n
- 数据驱动ddt简单使用
安装 pip install ddt 数据驱动 ddt 可以使用的地方很多 比如: 1. 做接口测试的参数化 2. 读取自动化测试关键字模型的测试用例 等 demo import ddt, unit ...
- Spring Cloud 核心组件之Spring Cloud Zuul:API网关服务
Spring Cloud Zuul:API网关服务 SpringCloud学习教程 SpringCloud API网关 Spring Cloud Zuul 是Spring Cloud Netflix ...