一、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
微信掃一掃
支付寶掃一掃