最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ElasticSearch 動(dòng)態(tài)映射實(shí)戰(zhàn)詳解

 更新時(shí)間:2023年01月31日 14:32:49   作者:程序員皮卡秋  
這篇文章主要為大家介紹了ElasticSearch 動(dòng)態(tài)映射實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

什么是動(dòng)態(tài)映射

通俗的講,就是文檔中的字段類型可以由ES動(dòng)態(tài)識(shí)別,無需在創(chuàng)建索引的時(shí)候規(guī)定字段的類型。

比如在項(xiàng)目中,如果不確定字段數(shù)據(jù)類型的情況下,可以使用動(dòng)態(tài)映射,ES可以利用動(dòng)態(tài)映射來決定該字段的類型,并自動(dòng)把該字段添加到映射中。

在使用的時(shí)候要結(jié)合實(shí)際業(yè)務(wù)來考慮,如果將 ES 當(dāng)作主要的數(shù)據(jù)存儲(chǔ)使用,并且希望出現(xiàn)未知字段時(shí)拋出異常,那么開啟動(dòng)態(tài) mapping 并不適用。

***在不確定索引類型字段時(shí),可以先創(chuàng)建臨時(shí)索引,然后存儲(chǔ)數(shù)據(jù),查詢映射。再刪除臨時(shí)索引。這樣就得到數(shù)據(jù)的基本映射了,可以在其上做精細(xì)化修改。 ***

映射規(guī)則

  • null 沒有字段被添加
  • true or false boolean 類型
  • 浮點(diǎn)類型數(shù)字 float 類型
  • 數(shù)字 long 類型
  • JSON 對(duì)象 object 類型
  • 數(shù)組 由數(shù)組中第一個(gè)非空值決定
  • string 有可能是 date 類型(若開啟日期檢測(cè))、double 或 long 類型、text 類型、keyword 類型

在 mapping 中可以通過 dynamic 設(shè)置來控制是否自動(dòng)新增字段,接受以下參數(shù):

  • true:默認(rèn)值為 true,自動(dòng)添加字段。
  • false:忽略新的字段。
  • strict:嚴(yán)格模式,發(fā)現(xiàn)新的字段拋出異常。

日期規(guī)則

es中當(dāng)字符串的格式為:yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z時(shí),es動(dòng)態(tài)模板會(huì)自動(dòng)認(rèn)為該字符串為日志類型

  • 可以通過date_detection來關(guān)閉日期模板匹配
  • 可以通過dynamic_date_formats來指定日期字符匹配模板
PUT my_index
{
"mappings": {
  "dynamic_date_formats": ["MM/dd/yyyy"]
}
}

數(shù)字檢測(cè)

動(dòng)態(tài)映射有時(shí)會(huì)將數(shù)字映射為字符串類型,可以通過開啟數(shù)字檢測(cè)來解決該問題

PUT my_index
{
"mappings": {
  "numeric_detection": true
}
}

動(dòng)態(tài)映射模板

定義動(dòng)態(tài)映射模板,來格式化動(dòng)態(tài)映射的規(guī)則,動(dòng)態(tài)映射模板包含以下關(guān)鍵字:

  • match_mapping_type:用來匹配當(dāng)前映射的字段類型??梢岳斫鉃?,當(dāng)字段類型為match_mapping_type時(shí)
  • match、unmatch 、match_pattern:用來匹配當(dāng)前映射字段的名稱。可以理解為,當(dāng)字段名稱匹配match、match_pattern時(shí),當(dāng)字段名稱不匹配unmatch時(shí)
  • path_match、path_unmatch:用來匹配當(dāng)前映射字段的路徑,通常用來匹配嵌套字段??梢岳斫鉃?,當(dāng)字段路徑為path_match時(shí),當(dāng)字段路徑不匹配path_unmatch時(shí)
  • {name}, {dynamic_type} :用來進(jìn)行占位符匹配,具體怎么用,都可以,但是最終映射的值為name或動(dòng)態(tài)類型 當(dāng)然也可以直接強(qiáng)制指定類型和屬性

下面看一些示例:

match_mapping_type

dynamic_templates是動(dòng)態(tài)模板名稱,什么字段都可以。integersstrings時(shí)動(dòng)態(tài)模板項(xiàng)名稱

PUT my_index
{
"mappings": {
 "dynamic_templates": [
   {
     "integers": {
       "match_mapping_type": "long",
       "mapping": {
         "type": "integer"
       }
     }
   },
   {
     "strings": {
       "match_mapping_type": "string",
       "mapping": {
         "type": "text",
         "fields": {
           "raw": {
             "type":  "keyword",
             "ignore_above": 256
           }
         }
       }
     }
   }
 ]
}
}

match、unmatch

PUT my_index
{
"mappings": {
 "dynamic_templates": [
   {
     "longs_as_strings": {
       "match":   "long_*",
       "unmatch": "*_text",
       "mapping": {
         "type": "long"
       }
     }
   }
 ]
}
}

match_pattern

{
"mappings": {
 "dynamic_templates": [
   {
     "longs_as_strings": {
       "match_pattern": "regex",  
       "match": "^profit_\d+$",
       "unmatch": "*_text",
       "mapping": {
         "type": "long"
       }
     }
   }
 ]
}
}

path_match、path_unmatch

{ 
    "mappings": { 
        "dynamic_templates": [ 
            {
                "full_name": {
                    "path_match": "name.*",
                    "path_unmatch": "*.middle",
                    "mapping": {
                        "type": "text",
                        "copy_to": "full_name"
                    }
                }
            } 
        ] 
    } 
}

{name}、{dynamic_type}

{
  "mappings": {
    "dynamic_templates": [
      {
        "named_analyzers": {
          "match_mapping_type": "string",
          "match": "*",
          "mapping": {
            "type": "text",
            "analyzer": "{name}"
          }
        }
      },
      {
        "no_doc_values": {
          "match_mapping_type":"*",
          "mapping": {
            "type": "{dynamic_type}",
            "doc_values": false
          }
        }
      }
    ]
  }
}

直接指定類型

{
  "mappings": {
    "dynamic_templates": [
      {
        "strings_as_keywords": {
          "match_mapping_type": "string",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ]
  }
}

索引模板

索引模板的作用是提前創(chuàng)建好模板,后續(xù)索引的創(chuàng)建會(huì)根據(jù)匹配規(guī)則,自動(dòng)生成該索引的配置

  • 模板只在索引創(chuàng)建時(shí)起作用,修改模板不會(huì)影響已創(chuàng)建的索引。
  • 可以設(shè)置多個(gè)索引模板,這些設(shè)置會(huì)被 merge 在一起。
  • 可以設(shè)置 order 的數(shù)值,控制 merge 的過程。

當(dāng)一個(gè)索引被創(chuàng)建時(shí),如果符合多個(gè)模板,那么模板之間merge符合以下規(guī)則:

  • order 值高的模板會(huì)覆蓋 order 值低的模板。
  • 相同字段會(huì)覆蓋
  • 不同字段會(huì)疊加

感興趣的同學(xué),可以自行去查詢相關(guān)文檔,這個(gè)不是很常用

結(jié)束語

本節(jié)主要講了ES中的動(dòng)態(tài)mapping概念以及它的相關(guān)屬性。下節(jié)給大家講ES中文檔相關(guān)的API操作

以上就是ElasticSearch 動(dòng)態(tài)映射實(shí)戰(zhàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于ElasticSearch 動(dòng)態(tài)映射的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 為spring get請(qǐng)求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰)

    為spring get請(qǐng)求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰)

    這篇文章主要介紹了為spring get請(qǐng)求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 基于openeuler的DataGear部署文檔

    基于openeuler的DataGear部署文檔

    本文詳細(xì)介紹了如何在openEuler操作系統(tǒng)上安裝和配置JDK以及DataGear,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • Java的SpringMVC中控制器返回XML數(shù)據(jù)問題

    Java的SpringMVC中控制器返回XML數(shù)據(jù)問題

    這篇文章主要介紹了Java的SpringMVC中控制器返回XML數(shù)據(jù)問題,控制器是處理HTTP請(qǐng)求的組件,它們接收來自客戶端的請(qǐng)求,并將其轉(zhuǎn)換為適當(dāng)?shù)捻憫?yīng),這些響應(yīng)可以是動(dòng)態(tài)生成的?HTML?頁面,也可以是JSON或XML格式的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • java中struts2實(shí)現(xiàn)文件上傳下載功能

    java中struts2實(shí)現(xiàn)文件上傳下載功能

    這篇文章主要介紹了java中struts2實(shí)現(xiàn)文件上傳下載功能的方法,以實(shí)例形式分析了struts2文件上傳下載功能的實(shí)現(xiàn)技巧與相關(guān)問題,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • Jenkins安裝多個(gè)jdk版本并在項(xiàng)目中選擇對(duì)應(yīng)jdk版本

    Jenkins安裝多個(gè)jdk版本并在項(xiàng)目中選擇對(duì)應(yīng)jdk版本

    在使用jenkins構(gòu)建項(xiàng)目時(shí)會(huì)遇到不同的job需要配置不同版本的jdk,下面這篇文章主要給大家介紹了關(guān)于Jenkins安裝多個(gè)jdk版本并在項(xiàng)目中選擇對(duì)應(yīng)jdk版本的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java中集合和數(shù)組的排序方式小結(jié)

    Java中集合和數(shù)組的排序方式小結(jié)

    這篇文章主要介紹了Java中集合和數(shù)組的排序方式小結(jié),本文講解了對(duì)數(shù)字?jǐn)?shù)組、字符數(shù)組排序以及集合序列的排序,需要的朋友可以參考下
    2015-01-01
  • 詳解spring boot配置 ssl

    詳解spring boot配置 ssl

    本篇文章主要介紹了詳解spring boot配置 ssl,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Spring Boot和Kotlin的無縫整合與完美交融

    Spring Boot和Kotlin的無縫整合與完美交融

    這篇文章主要給大家介紹了關(guān)于Spring Boot和Kotlin的無縫整合與完美交融的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Java內(nèi)存屏障詳解

    Java內(nèi)存屏障詳解

    文章主要介紹了內(nèi)存屏障的必要性,以及在多核處理器中如何通過內(nèi)存屏障來保證多線程程序的內(nèi)存可見性和防止指令亂序執(zhí)行,文章還詳細(xì)解釋了內(nèi)存屏障的作用、原理以及常見處理器中的重排序類型
    2025-01-01
  • Java中Cookie和Session的那些事兒

    Java中Cookie和Session的那些事兒

    Cookie和Session都是為了保持用戶的訪問狀態(tài),一方面為了方便業(yè)務(wù)實(shí)現(xiàn),另一方面為了簡(jiǎn)化服務(wù)端的程序設(shè)計(jì)。這篇文章主要介紹了java中cookie和session的知識(shí),需要的朋友可以參考下
    2016-09-09

最新評(píng)論

湘阴县| 镶黄旗| 会同县| 深水埗区| 区。| 阜阳市| 丰都县| 新龙县| 土默特右旗| 鄂温| 长武县| 东丽区| 应用必备| 台前县| 郁南县| 洛隆县| 右玉县| 博湖县| 新平| 甘泉县| 鹤岗市| 深泽县| 班玛县| 淅川县| 五家渠市| 镇康县| 永和县| 永修县| 罗甸县| 苍南县| 荆门市| 淮滨县| 子洲县| 张掖市| 贵州省| 牙克石市| 铅山县| 巴楚县| 清徐县| 浦东新区| 乌兰察布市|