ES增加欄位詳解

一、ES增加欄位索引

當我們需要往已有的ES索引中增加欄位時,需要先了解索引的映射(mapping)結構,在此基礎上進行增加欄位操作。

可以通過以下代碼示例獲取一個索引的mapping結構:

GET /{index}/_mapping

其中,{index}為指定的索引名稱。

在獲取到mapping結構後,我們需要對其進行修改並重新提交到ES中。

二、ES給已有數據增加欄位

當我們進行了ES索引的mapping結構的修改後,已有的數據並沒有該欄位,我們可以通過以下方法給已有的數據添加新欄位:

POST /{index}/_update_by_query
{
    "script": {
        "inline": "ctx._source.new_field = 'value'"
    },
    "query": {
        "match_all": {}
    }
}

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”value”為該欄位的默認值或者插入的值。

三、ES增加欄位語句

當我們需要在已有的ES索引中增加新的欄位時,可以通過以下代碼示例進行增加:

PUT /{index}/_mapping
{
  "properties": {
    "new_field": {
      "type": "text",
      "analyzer": "standard"
    }
  }
}

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”type”為新欄位的類型,”analyzer”為新欄位的分析器。

四、ES增加欄位需要遷移老數據嗎

在索引中增加新欄位時,並不需要遷移老數據。只有在查詢該新欄位時,系統會根據新欄位類型自動返回默認值或者空值。

五、ES增加欄位刪除欄位

我們可以通過以下方式刪除ES索引中的欄位:

PUT /{index}/_mapping
{
    "properties": {
        "old_field": {
          "type":"object",
          "enabled": false
        }
    }
}

其中,{index}為指定的索引名稱,”old_field”為需要刪除的欄位名稱。

六、ES增加欄位並設置默認值

我們可以通過以下方式增加新欄位並為欄位設置默認值:

PUT /{index}/_mapping
{
  "properties": {
    "new_field": {
      "type": "text",
      "analyzer": "standard",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      },
      "null_value": "null"
    }
  }
}

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”type”為新欄位的類型,”analyzer”為新欄位的分析器,”fields”為新欄位的子屬性,”null_value”為該欄位的默認值。

七、ES增加欄位需要重建索引嗎

在ES中增加新欄位後,索引不需要重建,可以直接開始使用新欄位。

八、增加欄位的SQL語句

我們可以通過以下SQL語句在ES中增加新欄位:

POST /{index}/_sql
{
  "query": "ALTER TABLE {index} ADD new_field TEXT"
}

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”TEXT”為新欄位的類型。

九、增加欄位名SQL

我們可以通過以下SQL語句在ES中增加新欄位:

ALTER TABLE {index} ADD new_field TEXT;

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”TEXT”為新欄位的類型。

十、ES mapping增加欄位

以上是ES增加欄位的常見操作方法,除了以上的方法外,也可以通過mapping的方式增加欄位:

PUT /{index}/_mapping
{
    "properties": {
        "new_field": {
            "type": "text",
            "analyzer": "ik_max_word"
        }
    }
}

其中,{index}為指定的索引名稱,”new_field”為需要增加的新欄位名稱,”type”為新欄位的類型,”analyzer”為新欄位的分析器。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/188394.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 13:30
下一篇 2024-11-28 13:30

相關推薦

  • Spark集成ES開發

    本文將介紹如何使用Spark集成ES進行數據開發和分析。 一、系統概述 Spark是一個基於內存的分散式計算系統,可以快速地處理大量數據。而ES(ElasticSearch)則是一…

    編程 2025-04-28
  • Navicat導出欄位識別為文本而不是數值

    解決方法:使用特定的代碼將導出的欄位識別為文本,而不是數值,下面將從多個方面進行詳細闡述。 一、ASCII碼轉換 在導出的文件中,將數值欄位使用ASCII碼轉換,即可讓這些欄位被識…

    編程 2025-04-28
  • 如何使用Java List根據某一欄位升序排序

    本文將詳細介紹在Java中如何使用List集合按照某一欄位進行升序排序。具體實現思路如下: 一、定義需要進行排序的Java對象 首先,我們需要定義一個Java對象,該對象包含多個字…

    編程 2025-04-27
  • 如何使用MySQL欄位去重

    本文將從多個方面為您詳細介紹如何使用MySQL欄位去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27
  • Helm部署ES CrashLoopBackOff

    如果你在使用Helm部署ES時遇到CrashLoopBackOff問題,那麼本文將對這一問題進行詳細解答。我們將從以下方面進行闡述: 一、問題分析與定位 在使用Helm部署ES時,…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論