当前位置: 首页 > 知识库问答 >
问题:

在elasticsearch中交换字段名

奚卓
2023-03-14

在elasticsearch的索引中有两个字段field1和field2

我需要重命名字段1到字段2,我也想重命名字段2到字段1

这就是我当前映射的样子,我已经为此映射索引了许多文档

{
  "mappings": {
    "properties": {
      "field1": {
        "type": "text"
      },
      "field2" : {
        "type" : "completion"
      }
    }
  }
}

我需要下面的地图

{
  "mappings": {
    "properties": {
      "field1": {
        "type": "completion"
      },
      "field2" : {
        "type" : "text"
      }
    }
  }
} 

是否有任何可能,我可以重命名字段和做重新索引?

我使用的是elasticsearch 7.4版

共有1个答案

苏宏逸
2023-03-14

是的,您可以使用查询更新API实现这一点,如下所示:

POST index/_update_by_query
{
  "script": {
    "source": "def tmp1 = ctx._source.field2; ctx._source.field2 = ctx._source.field1; ctx._source.field1 = tmp1;",
    "lang": "painless"
  }
}
 类似资料:
  • 问题内容: 我有这样的文件 我需要更改为 为此,首先将字段映射添加到现有索引 然后尝试重新索引 错误是 问题答案: 该字段在您的文档中尚不存在,因此您的脚本需要首先创建它: 或更短一些:

  • 我目前正在学习一些关于elasticsearch的知识,现在我试图从searchResponse中获取特定的字段,我使用以下代码: 所以我想问的是我如何从所有这些数据中获得特定的字段,我的数据库由ElasticSearch文档中的Shakespeare.json aviable组成,并且是这样形成的 这些是我使用的参数,以防有人感兴趣 这就是在浏览器中看到响应的方式,任何答案或提示或任何东西都被很

  • 问题内容: 根据官方的es文档,禁用交换是Elasticsearch可获得的最佳性能提升之一。 但是,事实证明配置起来很困难。我花了很多时间研究并尝试使用不同的方法来使用Kubernetes上的官方ES docker镜像禁用交换。 设置为环境变量时,映像无法启动,并显示错误:。正如文档所指出的那样,这是意料之中的。我什至用设置挂载了一个自定义,但是失败了。 在k8s上使用官方es映像时,建议的禁用

  • 问题内容: 为什么在能够过滤查询时无法看到_timestamp字段? 以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳? 映射为: 样本输出: 问题答案: 启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引: 这样,您将能够检索到时间戳记以来的毫秒数。

  • Sup社区。我有个问题。我正在使用Elasticsearch 6.4 我的数据结构的一部分: 我需要得到按成本排序的文档desc,我需要排序dirs字段中的值date_by字段与nulls-first。 如何对嵌套字段内的值进行排序,而不按此嵌套字段对文档进行排序?

  • 我在文档中有一个字段是ipv4的字符串表示形式(“1.2.3.4”),该字段的名称是“originating_ip”。我正在尝试使用无痛语言的脚本字段,以便添加一个新字段(originating_ip_calc)以获得所述IPv4的int(长)表示形式。 下面的脚本在groovy中工作(从我的理解来看,这基本上应该是一样的),但似乎在这个特定的情况下几乎不是。 我也在看这个问题,正如你从上面的代码