Elasticsearch给索引添加新字段并赋值(API方式)

这篇具有很好参考价值的文章主要介绍了Elasticsearch给索引添加新字段并赋值(API方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新增字段

首先查看索引当前结构 GET

GET   http://IP:9200/user

结果:

{
	"user": {
		"aliases": {},
		"mappings": {
			"properties": {
				"age": {
					"type": "double"
				},
				"name": {
					"type": "text"
				},
				"sex": {
					"type": "text"
				}
			}
		},
		"settings": {
			"index": {
				"routing": {
					"allocation": {
						"include": {
							"_tier_preference": "data_content"
						}
					}
				},
				"number_of_shards": "1",
				"provided_name": "user",
				"creation_date": "1668516591325",
				"number_of_replicas": "1",
				"uuid": "BArUKCd8RFafjfMSu6oHBw",
				"version": {
					"created": "8050099"
				}
			}
		}
	}
}

当前的user索引具有name、age、sex三个字段

添加字段

给索引user添加class字段

PUT   http://IP:9200/user/_mapping

​{
  "properties": {
    "class": {
      "type":"text"
    }
  }
}

添加完成后再次查看索引结构:

结果:

{
	"user": {
		"aliases": {},
		"mappings": {
			"properties": {
				"age": {
					"type": "double"
				},
				"class": {
					"type": "text"
				},
				"name": {
					"type": "text"
				},
				"sex": {
					"type": "text"
				}
			}
		},
		"settings": {
			"index": {
				"routing": {
					"allocation": {
						"include": {
							"_tier_preference": "data_content"
						}
					}
				},
				"number_of_shards": "1",
				"provided_name": "user",
				"creation_date": "1668516591325",
				"number_of_replicas": "1",
				"uuid": "BArUKCd8RFafjfMSu6oHBw",
				"version": {
					"created": "8050099"
				}
			}
		}
	}
}

可以看到结构中已经有了class字段了

给新增的字段赋值

先查看现在索引user中的数据

GET http://IP:9200/user/_search

结果:

{
	"took": 2,
	"timed_out": false,
	"_shards": {
		"total": 1,
		"successful": 1,
		"skipped": 0,
		"failed": 0
	},
	"hits": {
		"total": {
			"value": 2,
			"relation": "eq"
		},
		"max_score": 1,
		"hits": [
			{
				"_index": "user",
				"_id": "101",
				"_score": 1,
				"_source": {
					"name": "李四",
					"age": "18",
					"sex": "男"
				}
			},
			{
				"_index": "user",
				"_id": "102",
				"_score": 1,
				"_source": {
					"name": "王五",
					"age": "25",
					"sex": "女"
				}
			}
		]
	}
}

因为class字段在没有数据,所以自动过滤掉了不显示;

数据赋值

用法1

POST http://IP:9200/user/_update_by_query
{
    "script": {
        "lang": "painless",
        "inline": "ctx._source.class = '一班'"
    }
}

再次查看索引user数据,结果:

{
	"took": 2,
	"timed_out": false,
	"_shards": {
		"total": 1,
		"successful": 1,
		"skipped": 0,
		"failed": 0
	},
	"hits": {
		"total": {
			"value": 2,
			"relation": "eq"
		},
		"max_score": 1,
		"hits": [
			{
				"_index": "user",
				"_id": "101",
				"_score": 1,
				"_source": {
					"sex": "男",
					"name": "李四",
					"class": "一班",
					"age": "18"
				}
			},
			{
				"_index": "user",
				"_id": "102",
				"_score": 1,
				"_source": {
					"sex": "女",
					"name": "王五",
					"class": "一班",
					"age": "25"
				}
			}
		]
	}
}

可以看到现在的class字段数据已经添加进去了

用法2

将其他字段的值赋给新字段

POST http://IP:9200/user/_update_by_query
{
    "script": {
        "lang": "painless",
        "inline": "ctx._source.class = ctx._source.sex"
    }
}

结果:文章来源地址https://www.toymoban.com/news/detail-504683.html

{
	"took": 2,
	"timed_out": false,
	"_shards": {
		"total": 1,
		"successful": 1,
		"skipped": 0,
		"failed": 0
	},
	"hits": {
		"total": {
			"value": 2,
			"relation": "eq"
		},
		"max_score": 1,
		"hits": [
			{
				"_index": "user",
				"_id": "101",
				"_score": 1,
				"_source": {
					"sex": "男",
					"name": "李四",
					"class": "男",
					"age": "18"
				}
			},
			{
				"_index": "user",
				"_id": "102",
				"_score": 1,
				"_source": {
					"sex": "女",
					"name": "王五",
					"class": "女",
					"age": "25"
				}
			}
		]
	}
}

到了这里,关于Elasticsearch给索引添加新字段并赋值(API方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch - 索引增加字段并查询增加字段前的历史数据

    1. 问题引入 我们项目中有一个需求:ElasticSearch存在很多历史数据,然后需求中索引新增了一个字段,我们需要根据条件查询出历史数据,但历史数据中这个新增的字段并不存在,如何查询到历史数据呢? 1. 索引2个文档 2. 给索引增加新的字段 3. 再次索引1个文档 这个文档新

    2024年02月10日
    浏览(66)
  • Elasticsearch 索引管理:使用别名来修改字段类型

    在 Elasticsearch 中,一个常见的问题是如何修改已存在的索引的字段类型。这是一个棘手的问题,因为 Elasticsearch 本身不允许直接修改字段类型。如果删除现有索引,重新建索引的话则会导致数据丢失。有一个方法是使用别名索引,当需要调整索引时可以先新建一个索引,把数

    2024年02月03日
    浏览(43)
  • Elasticsearch Mapping字段未支持索引导致搜索失效

    生产上Es根据一个时间字段搜索,却没有返回数据 根据命令: GET indexName/_mapping 查看 count_name设置了 “index”: false 导致根据该字段搜索导致索引不生效。 ES的mappings 定义好了生成索引后是不支持修改现有的字段的,只能新增属性。 使用 reindex 命令处理 1、运行命令: GET ind

    2024年02月11日
    浏览(32)
  • Elasticsearch:更改索引中字段的数据类型的方法

    1.问题描述:         需要将已有索引中的已有字段作为新的查询条件,需求中需要对该字段进行范围查询,当前字段为keyword类型的数字,此时发现查询所得结果与预期不符合。 2.问题拆解: 2.1发现问题: 索引字段数据类型不合理 2.2问题本质: 需要将keyword类型的转换成

    2024年02月08日
    浏览(47)
  • Elasticsearch解决不能修改索引、字段问题解决方案

    问题1: 由于es索引不能删除,不能修改,在不影响原数据的情况下,并且生产服务不停机的情况下,怎么修改索引,并保留原索引内的数据? 基于kibanna的dev Tools执行参数,淘汰postman,kibanna会有提示 1、原来索引起别名job 2、重建索引,数据迁移,默认是同步执行大数据量太

    2024年02月12日
    浏览(43)
  • Python连接Elasticsearch查询索引字段命中数详解

    📚 个人网站:ipengtao.com Elasticsearch是一款强大的搜索和分析引擎,通过其RESTful API,可以方便地与其交互。本篇文章将深入探讨如何使用Python连接Elasticsearch,并通过查询索引某个字段的命中数来实现数据统计的目的。将介绍基础的Elasticsearch查询、高级的聚合查询以及一些常

    2024年02月04日
    浏览(61)
  • 3: [SpringData集成Elasticsearch] --- 创建索引和字段 --- 相关注解说明

    1.1.0:注意:ES 6.0.0以后ndex一个索引对应一个type(mysql 库里的表) 每个index有shard分片存储文件,相互独立。 1.1.1:@Document元注解参数和使用 — 注解使用 1.2.1:参数说明: type — 枚举类型 @Field(analyzer = “ik_max_word”,type = FieldType.Text) package org.springframework.data.elasticsearch.annotations

    2024年02月07日
    浏览(35)
  • Mysql为json字段创建索引的两种方式

    JSON 数据类型是在 mysql5.7 版本后新增的,同 TEXT,BLOB 字段一样,JSON 字段不允许直接创建索引。即使支持,实际意义也不大,因为我们一般是基于文档中的元素进行查询,很少会基于整个 JSON 文档。基于此问题,在 MySQL 8.0.17 及以后的版本中,InnoDB存储引擎支持JSON数组上的

    2024年02月12日
    浏览(44)
  • ElasticSearch第八讲 ES索引字段映射类型以及动态映射相关操作

    ES的映射:映射就是 Mapping,它用来定义一个文档以及文档所包含的字段该如何被存储和索引。所以,它其实有点类似于关系型数据库中表的定义。其中ES中映射可以分为动态映射和静态映射,静态映射就是提前创建好对应字段文档映射关系,如果插入的类型不对会出错,而动

    2024年02月10日
    浏览(45)
  • 用Elasticsearch做大规模数据的多字段、多类型索引检索

    本文同时发布在我的个人博客 之前尝试了用mysql做大规模数据的检索优化,可以看到单字段检索的情况下,是可以通过各种手段做到各种类型索引快速检索的,那是一种相对简单的场景。 但是实际应用往往会复杂一些 —— 各类索引(匹配、全文检索、时间范围)混合使

    2024年04月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包