六十二团驱、Elasticsearch索引管理-定制化自己的dynamic mapping策略

1、定制dynamic策略

(1)true:遇到陌生字段丛塌,就進(jìn)行dynamic mapping

(2)遇到陌生字段较解,就忽略

(3)strict: 遇到陌生字段畜疾,就報錯

實(shí)例

PUT /my_index
{
  "mappings": {
    "my_type": {
      "dynamic" : "strict",
      "properties": {
        "title" : {
          "type": "text"
        },
        "address" : {
          "type": "object",
          "dynamic" : "true"
        } 
      }
    }
  }
}

創(chuàng)建了一個只能有title和address字段的type。因?yàn)閐ynamic:strict印衔。而address里面可以有任意字段啡捶,因?yàn)閐ynamic:true

Demo1

PUT /my_index/my_type/1
{
  "title" : "my article",
  "content" : "this is my article",
  "address" : {
    "province" : "guangdong",
    "city" : "guangzhou"
  }
}

結(jié)果

{
  "error": {
    "root_cause": [
      {
        "type": "strict_dynamic_mapping_exception",
        "reason": "mapping set to strict, dynamic introduction of [content] within [my_type] is not allowed"
      }
    ],
    "type": "strict_dynamic_mapping_exception",
    "reason": "mapping set to strict, dynamic introduction of [content] within [my_type] is not allowed"
  },
  "status": 400
}

報錯了,說type是strict_dynamic奸焙。沒有content瞎暑。

Demo2,刪除content

PUT /my_index/my_type/1
{
  "title" : "my article",
  "address" : {
    "province" : "guangdong",
    "city" : "guangzhou",
    "area" : "heheda"
  }
}

結(jié)果:

{
  "_index": "my_index",
  "_type": "my_type",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

查看剛才生成的mapping是什么樣的与帆?
GET /my_index/_mapping/my_type/

{
  "my_index": {
    "mappings": {
      "my_type": {
        "dynamic": "strict",
        "properties": {
          "address": {
            "dynamic": "true",
            "properties": {
              "area": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "city": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "province": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          },
          "title": {
            "type": "text"
          }
        }
      }
    }
  }
}

2了赌、定制dynamic mapping策略

(1)date_detection
默認(rèn)會按照一定格式識別date,比如yyyy-MM-dd玄糟。但是如果某個field先過來一個2017-01-05的值揍拆,就會被自動dynamic mapping成date類型,后面如果再來一個比如“hello world”這種非date格式的value茶凳,就會報錯嫂拴。

可以手動關(guān)閉某個type的date_detection,如果有需要贮喧,自己手動指定某個field為date類型筒狠。

PUT /my_index/_mapping/my_type
{
  "date_detection": false
}

(2)定制自己的dynamic mapping template(type level)

PUT /my_index2
{
  "mappings": {
    "my_type": {
      "dynamic_templates": [
        {
          "en": {
            "match":              "*_en", 
            "match_mapping_type": "string",
            "mapping": {
                "type":           "string",
                "analyzer":       "english"
            }
          }
        }
      ]
    }
  }
}

新增兩條數(shù)據(jù)

PUT /my_index2/my_type/1
{
  "title": "this is my first article"
}

PUT /my_index2/my_type/2
{
  "title_en": "this is my first article"
}

進(jìn)行查詢

GET /my_index2/my_type/_search
{
  "query": {
    "match": {
      "title": "is"
    }
  }
}

結(jié)果

{
  "took": 98,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2824934,
    "hits": [
      {
        "_index": "my_index2",
        "_type": "my_type",
        "_id": "1",
        "_score": 0.2824934,
        "_source": {
          "title": "this is my first article"
        }
      }
    ]
  }
}

可以查出記錄

GET /my_index2/my_type/_search
{
  "query": {
    "match": {
      "titl_en": "is"
    }
  }
}

結(jié)果

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

查詢不出結(jié)果

title沒有匹配到任何的dynamic模板,默認(rèn)就是standard分詞器箱沦,不會過濾停用詞辩恼,is會進(jìn)入倒排索引,用is來搜索是可以搜索到的

title_en匹配到了dynamic模板谓形,就是English分詞器灶伊,會過濾停用詞,is這種停用詞就會被過濾掉寒跳,用is來搜索就搜索不到了聘萨。

(3)定制自己的default mapping template(index level)

PUT /my_index
{
    "mappings": {
        "_default_": {
            "_all": { "enabled":  false }
        },
        "blog": {
            "_all": { "enabled":  true  }
        }
    }
}

若有興趣,歡迎來加入群童太,【Java初學(xué)者學(xué)習(xí)交流群】:458430385米辐,此群有Java開發(fā)人員、UI設(shè)計(jì)人員和前端工程師书释。有問必答翘贮,共同探討學(xué)習(xí),一起進(jìn)步爆惧!
歡迎關(guān)注我的微信公眾號【Java碼農(nóng)社區(qū)】狸页,會定時推送各種干貨:


qrcode_for_gh_577b64e73701_258.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扯再,隨后出現(xiàn)的幾起案子芍耘,更是在濱河造成了極大的恐慌腹侣,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齿穗,死亡現(xiàn)場離奇詭異傲隶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窃页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門跺株,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脖卖,你說我怎么就攤上這事乒省。” “怎么了畦木?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵袖扛,是天一觀的道長。 經(jīng)常有香客問我十籍,道長蛆封,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任勾栗,我火速辦了婚禮惨篱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘围俘。我一直安慰自己砸讳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布界牡。 她就那樣靜靜地躺著簿寂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宿亡。 梳的紋絲不亂的頭發(fā)上常遂,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音她混,去河邊找鬼烈钞。 笑死泊碑,一個胖子當(dāng)著我的面吹牛坤按,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馒过,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼臭脓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腹忽?” 一聲冷哼從身側(cè)響起来累,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤砚作,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘹锁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葫录,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年领猾,在試婚紗的時候發(fā)現(xiàn)自己被綠了米同。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔竿,死狀恐怖面粮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情继低,我是刑警寧澤熬苍,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站袁翁,受9級特大地震影響柴底,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粱胜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一似枕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧年柠,春花似錦凿歼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掀抹,卻和暖如春虐拓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背傲武。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工蓉驹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揪利。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓态兴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疟位。 傳聞我的和親對象是個殘疾皇子瞻润,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 創(chuàng)建索引的語法 示例: 添加索引(索引一旦建立绍撞,不能修改) 刪除索引 分詞器的修改與定制 修改分詞器設(shè)置 默認(rèn)分詞...
    緩慢移動的蝸牛閱讀 2,455評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理正勒,服務(wù)發(fā)現(xiàn),斷路器傻铣,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 獲取索引的mapping 實(shí)例: 測試分析器 創(chuàng)建一個索引 到目前為止, 我們已經(jīng)通過索引一篇文檔創(chuàng)建了一個新的索...
    M醉逍遙閱讀 1,057評論 0 1
  • 收聽簡書播客 文/林嘉梓 有的事情不用當(dāng)面對你說: 有一個人章贞,他總是把你放在心中, 就像那看似平靜的湖面非洲,把高遠(yuǎn)的...
    簡書播客閱讀 1,071評論 1 17
  • 你——還好嗎阱驾? 《活在這珍貴的人間》活在這珍貴的人間太陽強(qiáng)烈水波溫柔活在這珍貴的人間人類和植物一樣幸福愛情和雨水一...
    音驪繪閱讀 228評論 0 2