欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ElasticSearch創(chuàng)建后索引修改數(shù)據(jù)類型方法步驟

 更新時(shí)間:2023年09月22日 10:29:40   作者:云上周郎  
Elasticsearch存儲數(shù)據(jù)之前需要先創(chuàng)建索引,類似于結(jié)構(gòu)型數(shù)據(jù)庫建庫建表,創(chuàng)建索引時(shí)定義了每個字段的索引方式和數(shù)據(jù)類型,這篇文章主要給大家介紹了關(guān)于ElasticSearch創(chuàng)建后索引修改數(shù)據(jù)類型的方法步驟,需要的朋友可以參考下

一、前言

在 Elasticsearch 中,一旦創(chuàng)建索引,就不能更改現(xiàn)有字段的數(shù)據(jù)類型。如果您需要更改數(shù)據(jù)類型,則需要重新創(chuàng)建索引并使用新的數(shù)據(jù)類型。以下針對各種業(yè)務(wù)場景總結(jié)幾種修改方法。

二、【方法一】刪除重建

這種方式的使用場景為當(dāng)前索引庫數(shù)據(jù)量不大,而且可以及時(shí)同步數(shù)據(jù)到該索引庫。一般用在實(shí)時(shí)采集數(shù)據(jù)到ES中,刪除舊的索引后,重新采集數(shù)據(jù)即可。

delete /my_index

三、【方法二】使用備份數(shù)據(jù)重建

當(dāng)你數(shù)據(jù)量也不算太大,_reindex的執(zhí)行速度還算快的,幾十萬的數(shù)據(jù)量大概在十分鐘以內(nèi),百萬級的大概在半個小時(shí)內(nèi)就可以完全備份,可以先使用備份庫,具體思路如下:

1、獲取源索引的數(shù)據(jù)(mapping) 并 創(chuàng)建臨時(shí)索引:my_index_temp,

2、備份數(shù)據(jù)到臨時(shí)索引:my_index_temp

3、刪除原索引: my_index,

4、重新創(chuàng)建正確數(shù)據(jù)類型索引:my_index

5、再把臨時(shí)索引:my_index_temp的數(shù)據(jù)備份到新創(chuàng)建索引 my_index。

操作步驟如下:

1、獲取原索引

//獲取源索引的mapping數(shù)據(jù)
GET my_index/_mapping
//返回示例如下
  {"my_index": {
    "mappings": {
      "cdp_doc": {
        "properties": {
	        "whyBuy": {
	          "type": "keyword"
	        },
	        "zipcode": {
	          "type": "keyword"
	        }
        }
      }
    }
  }

2、創(chuàng)建一個臨時(shí)索引,并備份原索引的數(shù)據(jù)

//代碼如下(示例):
//# 創(chuàng)建Mapping
PUT my_index_temp
{
  "mappings": {
    "cdp_doc": {
      "properties": {
        "whyBuy": {
          "type": "keyword"
        },
        "zipcode": {
          "type": "keyword"
        }
      }
    }
  }
}

3、備份原數(shù)據(jù)

// 同步數(shù)據(jù)值臨時(shí)索引
POST _reindex?refresh&wait_for_completion=false
{
  "conflicts": "proceed",
  "source": {
    "index": "my_index"
  },
  "dest": {
    "index": "my_index_temp",
    "op_type": "create"
  }
}
//查詢確認(rèn)數(shù)據(jù)是否復(fù)制過去
GET  my_index_temp/_search
{
  "query": {
    "term": {
    }
  }
}

4、刪除原索引及數(shù)據(jù)

//刪除索引及數(shù)據(jù)
delete my_index

5、重新創(chuàng)建正確的索引(注意是修改后的索引)

同步驟2

6、遷移舊數(shù)據(jù)回新索引

同步驟3

7、刪除臨時(shí)索引

同步驟4

四、【方法三】使用嵌套增加屬性

這種方法針對索引字段類型text,添加keyword類型操作。

首先區(qū)分一下text類型和keyword類型:

text類型:會進(jìn)行分詞、分詞后建立索引、支持模糊查詢、不支持準(zhǔn)確查詢、不支持聚合查詢。

keyword類型:不會分詞、直接建立索引、不支持模糊查詢、支持準(zhǔn)確查詢、支持聚合查詢。

操作步驟如下:

PUT my_index/_mapping
{
	"properties": {
		"my_fields": {
			"type": "text",
            "analyzer": "ik_smart",
			"fields": {
				"keyword": {
					"type": "keyword",
					"ignore_above": 256
				}
			}
		}
	}
}
// 結(jié)果:
{
  "acknowledged" : true
}

注意這里有個問題,如果直接執(zhí)行完后,數(shù)據(jù)不會及時(shí)更新,所以執(zhí)行到這里如果去聚合,舊數(shù)據(jù)是一樣沒有聚合到的,還需要執(zhí)行以下語句更新數(shù)據(jù)

POST my_index/_update_by_query
# 后臺執(zhí)行
POST my_index/_update_by_query?wait_for_completion=false

修改完成之后,新的數(shù)據(jù)就會按照新的mapping來走了,可以通過my_fields.keyword的形式進(jìn)行完全匹配和聚合搜索。

五、【方法四】使用數(shù)據(jù)從原索引導(dǎo)入新索引中

假設(shè)您要將一個名為 my_index 的索引中的整數(shù)類型更改為字符串類型。以下示例代碼將源索引中的數(shù)據(jù)復(fù)制到新索引中,并使用新的字段映射規(guī)則:

POST _reindex
{
  "source": {
    "index": "my_index"
  },
  "dest": {
    "index": "my_new_index"
  },
  "script": {
    "source": "ctx._source.my_integer_field = ctx._source.my_integer_field.toString()",
    "lang": "painless"
  },
  "mappings": {
    "properties": {
      "my_integer_field": {
        "type": "text"
      }
    }
  }
}

在上面的代碼中,我們使用腳本將原始索引中的整數(shù)類型字段 my_integer_field 轉(zhuǎn)換為字符串類型,并將其保存到新的索引中。同時(shí),在新索引中定義了一個新的數(shù)據(jù)類型 text,用于存儲該字段。

切換到新的索引

最后,一旦新索引準(zhǔn)備就緒并包含原始索引的所有數(shù)據(jù),就可以切換應(yīng)用程序以使用新的索引。

需要注意的是,重新創(chuàng)建索引可能會導(dǎo)致數(shù)據(jù)丟失或不可用性。在執(zhí)行此操作之前,請務(wù)必備份和驗(yàn)證數(shù)據(jù)。

總結(jié)

到此這篇關(guān)于ElasticSearch創(chuàng)建后索引修改數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)ES創(chuàng)建索引修改數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mall整合SpringTask實(shí)現(xiàn)定時(shí)任務(wù)的方法示例

    mall整合SpringTask實(shí)現(xiàn)定時(shí)任務(wù)的方法示例

    這篇文章主要介紹了mall整合SpringTask實(shí)現(xiàn)定時(shí)任務(wù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Java大批量導(dǎo)出Excel數(shù)據(jù)的優(yōu)化過程

    Java大批量導(dǎo)出Excel數(shù)據(jù)的優(yōu)化過程

    幾十萬上百萬行的數(shù)據(jù)是很常見的。本文主要介紹了Java大批量導(dǎo)出Excel數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java中的switch case語句使用詳解

    java中的switch case語句使用詳解

    這篇文章主要介紹了java中的switch case語句使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 舉例講解Java設(shè)計(jì)模式中的對象池模式編程

    舉例講解Java設(shè)計(jì)模式中的對象池模式編程

    這篇文章主要介紹了Java設(shè)計(jì)模式中的對象池模式編程示例分享,對象池模式經(jīng)常在多線程開發(fā)時(shí)被用到,需要的朋友可以參考下
    2016-02-02
  • java生成圖片驗(yàn)證碼實(shí)例代碼

    java生成圖片驗(yàn)證碼實(shí)例代碼

    這篇文章主要介紹了java生成圖片驗(yàn)證碼實(shí)例代碼,驗(yàn)證碼的種類有很多,問題驗(yàn)證、短信驗(yàn)證還有常見的圖片驗(yàn)證,本文就為大家介紹生成圖片驗(yàn)證碼最簡單方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • IDEA如何自動生成serialVersionUID的設(shè)置

    IDEA如何自動生成serialVersionUID的設(shè)置

    這篇文章主要介紹了IDEA如何自動生成 serialVersionUID 的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java使用@Autowired注解獲取對象為null的幾種情況及解決方法

    Java使用@Autowired注解獲取對象為null的幾種情況及解決方法

    這篇文章主要給大家介紹了使用@Autowired注解獲取對象為null的幾種情況以及?解決方法,文中有詳細(xì)的代碼示例講解,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java使用wait和notify實(shí)現(xiàn)線程之間的通信

    Java使用wait和notify實(shí)現(xiàn)線程之間的通信

    Java 線程通信是將多個獨(dú)立的線程個體進(jìn)行關(guān)聯(lián)處理,使得線程與線程之間能進(jìn)行相互通信,下面這篇文章主要給大家介紹了關(guān)于Java使用wait和notify實(shí)現(xiàn)線程之間通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Hibernate之環(huán)境搭建及demo分享

    Hibernate之環(huán)境搭建及demo分享

    下面小編就為大家分享一篇Hibernate之環(huán)境搭建及demo,具有很好的參考價(jià)值,希望對大家有所幫助
    2017-11-11
  • java?zip文件解壓后無法刪除原zip文件問題

    java?zip文件解壓后無法刪除原zip文件問題

    這篇文章主要介紹了java?zip文件解壓后無法刪除原zip文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論