日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > [Elasticsearch] 索引管理 (四) - 動態映射

[Elasticsearch] 索引管理 (四) - 動態映射

來源:程序員人生   發布時間:2015-01-04 09:31:27 閱讀次數:4133次

動態映照(Dynamic Mapping)

當ES在文檔中碰到1個之前沒見過的字段時,它會利用動態映照來決定該字段的類型,并自動地對該字段添加映照。

有時這正是需要的行動,但有時不是。你也許不知道在以后你的文檔中會添加哪些字段,但是你想要它們能夠被自動地索引。也許你只是想要疏忽它們。或 - 特別當你將ES當作主要的數據存儲使用時 - 大概你會希望這些未知的字段會拋出異常來提示你注意這1問題。

榮幸的是,你可以通過dynamic設置來控制這1行動,它能夠接受以下的選項:

  • true:默許值。動態添加字段
  • false:疏忽新字段
  • strict:如果碰到陌生字段,拋出異常

dynamic設置可以適用在根對象上或object類型的任意字段上。你應當默許地將dynamic設置為strict,但是為某個特定的內部對象啟用它:

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

my_type對象上如果碰到了未知字段則會拋出1個異常。 在stash對象上會動態添加新字段。

通過以上的映照,你可以向stash添加新的可搜索的字段:

PUT /my_index/my_type/1 { "title": "This doc adds a new field", "stash": { "new_field": "Success!" } }

但是,如果在頂層對象上試圖添加新字段則會失敗:

PUT /my_index/my_type/1 { "title": "This throws a StrictDynamicMappingException", "new_field": "Fail!" }

NOTE

dynamic設置為false其實不會改變_source字段的內容 - _source字段依然會保存你索引的全部JSON文檔。只不過是陌生的字段將不會被添加到映照中,以致于它不能被搜索到。


自定義動態映照

如果你知道你需要動態的添加的新字段,那末你或許會啟用動態映照。但是有時動態映照的規則又有些不夠靈活。榮幸的是,你可以調劑某些設置來讓動態映照的規則更加合適你的數據。

date_detection

當ES碰到1個新的字符串字段時,它會檢查該字串是不是含有1個可被辨認的日期,比如2014-01-01。如果存在,那末它會被辨認為1個date類型的字段。否則會將它作為string進行添加。

有時這類行動會致使1些問題。如果你想要索引1份這樣的文檔:

{ "note": "2014-01-01" }

假定這是note字段第1次被發現,那末根據規則它會被作為date字段添加。但是如果下1份文檔是這樣的:

{ "note": "Logged out" }

這時候該字段明顯不是日期,但是已太遲了。該字段的類型已是日期類型的字段了,因此這會致使1個異常被拋出。

可以通過在根對象上將date_detection設置為false來關閉日期檢測:

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

有了以上的映照,1個字符串總是會被當作string類型。如果你需要1個date字段,你需要手動地添加它。

NOTE

ES中辨認日期的方法可以通過dynamic_date_formats設置改變。

dynamic_templates

通過dynamic_templates,你可以具有對新字段的動態映照規則具有完全的控制。你設置可以根據字段名稱或類型來使用1個不同的映照規則。

每一個模板都有1個名字,可以用來描寫這個模板做了甚么。同時它有1個mapping用來指定具體的映照信息,和最少1個參數(比如match)用來規定對甚么字段需要使用該模板。

模板的匹配是有順序的 - 第1個匹配的模板會被使用。比如我們可以為string字段指定兩個模板:

  • es:以_es結尾的字段應當使用spanish解析器
  • en:其它所有字段使用english解析器

我們需要將es模板放在第1個,由于它相比能夠匹配所有字符串字段的en模板更加具體:

PUT /my_index { "mappings": { "my_type": { "dynamic_templates": [ { "es": { "match": "*_es", "match_mapping_type": "string", "mapping": { "type": "string", "analyzer": "spanish" } }}, { "en": { "match": "*", "match_mapping_type": "string", "mapping": { "type": "string", "analyzer": "english" } }} ] }}}

match_mapping_type允許你只對特定類型的字段使用模板,正如標準動態映照規則那樣,比如stringlong等。

match參數只會匹配字段名,path_match參數用于匹配對象中字段的完全路徑,比如address.*.name可以匹配以下字段:

{ "address": "city": "name": "New York" } } }

unmatchpath_unmatch模式能夠用來排除某些字段,沒有被排除的字段則會被匹配。

更多的配置選項可以在根對象的參考文檔中找到。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产剧情一区二区 | 欧美精品成人一区二区三区四区 | 成人毛片在线播放器 | 日韩靠逼 | 毛片在线网| 亚洲一区二区黄色 | 日本精品黄色 | 青青草久久 | 国产三级久久久 | 欧美日本国产在线 | 精品国产欧美一区二区 | 250pp久久新| 久久国产综合 | 日韩精品久久久久久久电影99爱 | 免费成人在线观看 | 色婷婷六月| 日韩天堂网 | 一本色道久久88综合亚洲精品ⅰ | 国产区一区二区三区 | 国产精品综合一区二区 | 日韩视频在线一区 | 国产精品99精品久久免费 | 国产1区2区3区在线观看 | 欧洲精品久久 | 国产女主播在线视频 | 精品国产乱码久久久久久图片 | 免费a v视频| 久久都是精品 | 国产又色又爽又黄刺激视频免费 | 国产精品久久久久久久免费大片 | 91精品国产综合久久久久久丝袜 | 久久久精品动漫 | 男人都懂的网站 | 狠狠搞狠狠搞 | 人人看人人模 | 国产精品18久久久 | 日韩欧美国产高清 | 亚洲欧洲成人av每日更新 | 国产区在线看 | 亚洲精品电影在线观看 | 亚洲综合自拍 |