版本

ElasticSearch version "number": "7.14.1"

获取健康值

GET _cat/health?v

获取所有索引的信息

GET _cat/indices?v

创建索引

创建方式

  1. 创建一个索引!

PUT /索引名/~类型名~/文档id

类型名以后到8版本就没有了

PUT /test1/type1/1
{
"name":"haima",
"age":2
}
  1. 创建一个索引!

PUT /索引名/~类型名~/文档id

建 索引规则 和 字段的类型,不填入数据内容

es6版本需要加type,

es7版本就不需要加type了,es7一个文档里只有一个类型(_doc)(相当于mysql里只有一张表)。

PUT /test1/type1/1
{
"name":"haima",
"age":2
}
  1. 查看数据

完成了自动增加了索引,数据也成功的添加了,这就是我说大家在初期可以把它当做数据库学习的原因!

  1. 那么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索引操作的更多相关文章

  1. Elasticsearch-PHP 索引操作(转)

    索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...

  2. Elasticsearch-PHP 索引操作

    索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...

  3. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  4. ES入门三部曲:索引操作,映射操作,文档操作

    ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...

  5. Mongodb学习笔记三(Mongodb索引操作及性能测试)

    第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...

  6. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  7. Mysql之表的操作与索引操作

    表的操作: 1.表的创建: create table if not exists table_name(字段定义); 例子: create table if not exists user(id in ...

  8. 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器

     1  Lucene卡发包结构分析 包名 功能 org.apache.lucene.analysis Analysis提供自带的各种Analyzer org.apache.lucene.colla ...

  9. Tensor索引操作

    #Tensor索引操作 ''''' Tensor支持与numpy.ndarray类似的索引操作,语法上也类似 如无特殊说明,索引出来的结果与原tensor共享内存,即修改一个,另一个会跟着修改 ''' ...

  10. SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁

    死锁概述 对于数据库中出现的死锁,通俗地解释就是:不同Session(会话)持有一部分资源,并且同时相互排他性地申请对方持有的资源,然后双方都得不到自己想要的资源,从而造成的一种僵持的现象.当然,在任 ...

随机推荐

  1. 学习蓝图+行为树实现AI角色的跟随操作

    跟随B站视频学习 准备工作 一个角色蓝图类用来设置AI角色,一个Blackboard--AI的大脑,一个AITree--AI的行为控制,一个AIController蓝图类--定义AI的控制器. 是否发 ...

  2. 【已解决】linux centos7系统磁盘扩容

    第一步要手动加硬盘(我的操作是在20G的基础上加了30G) [reliable@hadoop102 ~]$ su root密码: 查看当前磁盘挂载情况: [root@hadoop102 reliabl ...

  3. Python---flask框架实现免密登录功能

    思路总结: html代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta c ...

  4. #交互,分类讨论#CF1292E Rin and The Unknown Flower

    题目传送门 分析 先尝试锁定一个字母,显然询问 \(CH,CO,CC\) 会比直接询问 \(C\) 更优,虽然牺牲了最后一个位置是否为 \(C\) 的查询. 同理,询问 \(HH,OH,CH\) 会比 ...

  5. Linux Ubuntu配置国内源

    配置国内源 因为众所周知的原因,国外的很多网站在国内是访问不了或者访问极慢的,这其中就包括了Ubuntu的官方源. 所以,想要流畅的使用apt安装应用,就需要配置国内源的镜像. 市面上Ubuntu的国 ...

  6. jemter返回结果中文乱码

    如图,返回的结果,中文出现乱码 对于这个问题有两种解决方法 第一种:修改jemeter文件,需要重启jemter 在 bin 目录下,找到  jmeter.properties  这个文件,修改编码格 ...

  7. 新手真的别再用过时的jenkins freestyle了,10分钟教你搞定快速编写jenksinfile,快速离线调试

    Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化.它通过Domain Specific Langua ...

  8. Quanto: PyTorch 量化工具包

    量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活,以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销. 减 ...

  9. 《C# in depth》第2章C#2.0中的更改(十五)——字面量

    一.概念 在计算机编程中,Literals(字面量)是指在程序中直接表示数据的一种方式.它们是在代码中出现的固定值,与变量不同,它们没有名称或标识符. Literals 可以用于各种数据类型,包括整数 ...

  10. 浏览器端实现类似input限制输入两位小数,输入时光标从输入位置移动到最后

    1.问题描述展示 示例代码所做限制为不允许输入字母d,其他限制规则可以根据需求自己调整,使用React编写,其他框架或原生均可根据该代码理解原理进行转变,特意使用了中文键盘可以看到输入框下面白色框闪出 ...