广告位联系
返回顶部
分享到

在Elasticsearch中添加字段的详细方法

java 来源:互联网 作者:佚名 发布时间:2024-07-26 21:28:14 人浏览
摘要

当使用Elasticsearch(ES)添加字段时,通常会涉及到更新已有索引的映射(mapping),以确保新字段能够被正确地索引和搜索。下面是如何通过ES的API来更新索引映射并添加一个新字段的详细步骤

当使用Elasticsearch(ES)添加字段时,通常会涉及到更新已有索引的映射(mapping),以确保新字段能够被正确地索引和搜索。下面是如何通过ES的API来更新索引映射并添加一个新字段的详细步骤:

1. 确认索引存在

首先,确保你要更新映射的索引已经存在。如果索引不存在,你需要先创建索引。

1

PUT /yuanmei_images

2. 更新索引映射

使用PUT请求来更新索引的映射。假设现在要给yuanmei_images索引添加一个名为versionId的新字段,类型为long。这可以通过以下方式完成:

1

2

3

4

5

6

7

8

PUT /yuanmei_images/_mapping

{

  "properties": {

    "versionId": {

      "type": "long"

    }

  }

}

在上面的请求中:

  • PUT /yuanmei_images/_mapping:指定要更新映射的索引和类型。
  • "properties":定义索引中的属性。
  • "versionId":新字段的名称。
  • "type": "long":指定字段的数据类型为长整型。

3. 确认映射更新成功

发送上述请求后,Elasticsearch会返回一个确认消息,告知映射已成功更新。你可以根据返回的响应来验证是否添加字段的操作已经生效。

注意事项

  • 字段类型和映射设计:在更新映射时,确保字段类型和索引的需求一致。错误的映射可能导致数据不正确地索引或搜索。
  • 索引健康状态:更新映射可能会影响索引的健康状态,尤其是在生产环境中。建议在低峰期进行此类操作,并备份重要数据。

示例应用

假设你有一个图像索引yuanmei_images,原本只包含图像的基本信息,如路径、创建日期等。现在,你想要添加一个字段来记录每个图像的版本号(versionId)。通过上述步骤,你可以轻松地将新字段添加到现有的Elasticsearch索引中,以便更好地管理和分析数据。

这种能力使得Elasticsearch成为处理大量文档和复杂数据结构的理想选择,无论是对于实时搜索、分析还是日志处理。

附:Elasticsearch删除索引中的字段

  • 原索引mappings如下,有full_name和short_name两个字段

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

{

    "audit_demo": {

        "mappings": {

            "_doc": {

                "properties": {

                    "full_name": {

                        "type": "text",

                        "analyzer": "ik_max_word"

                    },

                    "short_name": {

                        "type": "keyword"

                    }

                }

            }

        }

    }

}

  • 想要删掉short_name字段,修改后mappings如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

    "audit_demo_bak": {

        "mappings": {

            "_doc": {

                "properties": {

                    "full_name": {

                        "type": "text",

                        "analyzer": "ik_max_word"

                    }

                }

            }

        }

    }

}

  • 删除原索引中待删除字段的数据

1

2

3

4

5

6

7

8

9

10

POST  /audit_demo/_update_by_query

{

    "script": {

        "lang": "painless",

        "inline": "ctx._source.remove(\"short_name\")"

    },

    "query": {

        "match_all": {}

    }

}

注意:

只是删除数据,不是删除字段

如果不删除字段数据,后面reindex时依然会把待删除字段的值带到新索引,即使设置新索引的dynamic为false


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计