ElasticSearch的Object数据类型
上一篇mapping文章我們知道數字類型和日期類型要精確查找,以及mapping的兩個重要的作用。
所以創建索引的時候,是不是可以預先定義字段的類型以及相關屬性,這樣就能夠把日期字段處理成日期,把數字字段處理成數字,把字符串字段處理字符串值等。
支持的數據類型:
(1)核心數據類型(Core datatypes)
????字符型:string,string類型包括
????text 和 keyword
????
????text類型被用來索引長文本,在建立索引前會將這些文本進行分詞,轉化為詞的組合,建立索引。允許es來檢索這些詞語。text類型不能用來排序和聚合。
????
????Keyword類型不需要進行分詞,可以被用來檢索過濾、排序和聚合。keyword 類型字段只能用本身來進行檢索
????
????數字型:long, integer, short, byte, double, float
????日期型:date
????布爾型:boolean
????二進制型:binary
?
(2)復雜數據類型(Complex datatypes)
????數組類型(Array datatype):數組類型不需要專門指定數組元素的type,例如:
????????字符型數組: [ "one", "two" ]
????????整型數組:[ 1, 2 ]
????????數組型數組:[ 1, [ 2, 3 ]] 等價于[ 1, 2, 3 ]
????????對象數組:[ { "name": "Mary", "age": 12 }, { "name": "John", "age": 10 }]
????對象類型(Object datatype):_ object _ 用于單個JSON對象;
????嵌套類型(Nested datatype):_ nested _ 用于JSON數組;
(3)地理位置類型(Geo datatypes)
????地理坐標類型(Geo-point datatype):_ geo_point _ 用于經緯度坐標;
????地理形狀類型(Geo-Shape datatype):_ geo_shape _ 用于類似于多邊形的復雜形狀;
(4)特定類型(Specialised datatypes)
????IPv4 類型(IPv4 datatype):_ ip _ 用于IPv4 地址;
????Completion 類型(Completion datatype):_ completion _提供自動補全建議;
????Token count 類型(Token count datatype):_ token_count _ 用于統計做了標記的字段的index數目,該值會一直增加,不會因為過濾條件而減少。
????mapper-murmur3
????類型:通過插件,可以通過 _ murmur3 _ 來計算 index 的 hash 值;
????附加類型(Attachment datatype):采用 mapper-attachments
????插件,可支持_ attachments _ 索引,例如 Microsoft Office 格式,Open Document 格式,ePub, HTML 等。
?
支持的屬性:
"store":false//是否單獨設置此字段的是否存儲而從_source字段中分離,默認是false,只能搜索,不能獲取值
"index": true//分詞,不分詞是:false,設置成false,字段將不會被索引
???
"analyzer":"ik"//指定分詞器,默認分詞器為standard analyzer
"boost":1.23//字段級別的分數加權,默認值是1.0
"doc_values":false//對not_analyzed字段,默認都是開啟,分詞字段不能使用,對排序和聚合能提升較大性能,節約內存
"fielddata":{"format":"disabled"}//針對分詞字段,參與排序或聚合時能提高性能,不分詞字段統一建議使用doc_value
"fields":{"raw":{"type":"string","index":"not_analyzed"}} //可以對一個字段提供多種索引模式,同一個字段的值,一個分詞,一個不分詞
????????????
"ignore_above":100 //超過100個字符的文本,將會被忽略,不被索引
"include_in_all":ture//設置是否此字段包含在_all字段中,默認是true,除非index設置成no選項
"index_options":"docs"//4個可選參數docs(索引文檔號),freqs(文檔號+詞頻),positions(文檔號+詞頻+位置,通常用來距離查詢),offsets(文檔號+詞頻+位置+偏移量,通常被使用在高亮字段)分詞字段默認是position,其他的默認是docs
"norms":{"enable":true,"loading":"lazy"}//分詞字段默認配置,不分詞字段:默認{"enable":false},存儲長度因子和索引時boost,建議對需要參與評分字段使用 ,會額外增加內存消耗量
"null_value":"NULL"//設置一些缺失字段的初始化值,只有string可以使用,分詞字段的null值也會被分詞
"position_increament_gap":0//影響距離查詢或近似查詢,可以設置在多值字段的數據上火分詞字段上,查詢時可指定slop間隔,默認值是100
"search_analyzer":"ik"//設置搜索時的分詞器,默認跟ananlyzer是一致的,比如index時用standard+ngram,搜索時用standard用來完成自動提示功能
"similarity":"BM25"//默認是TF/IDF算法,指定一個字段評分策略,僅僅對字符串型和分詞類型有效
"term_vector":"no"//默認不存儲向量信息,支持參數yes(term存儲),with_positions(term+位置),with_offsets(term+偏移量),with_positions_offsets(term+位置+偏移量) 對快速高亮fast vector highlighter能提升性能,但開啟又會加大索引體積,不適合大數據量用
?
映射的分類:
(1)動態映射:
當ES在文檔中碰到一個以前沒見過的字段時,它會利用動態映射來決定該字段的類型,并自動地對該字段添加映射。
可以通過dynamic設置來控制這一行為,它能夠接受以下的選項:
????true:默認值。動態添加字段
????false:忽略新字段
????strict:如果碰到陌生字段,拋出異常
dynamic設置可以適用在根對象上或者object類型的任意字段上。
?
?
這里我們重點講一下object類型
#object類型 PUT /1ib5/person/1 {"name":"Tom" ,"age":25,"birthday":"1985-12-12","address":{"country": "china","province":"guangdong","city":"shenzhen"} }我們看下address這個字段,這個字段下包含了三個字段?這個就是object類型,我們就添加一下,成功created
?
我們查看下自動創建的映射mapping
GET /1ib5/person/_mapping
{"1ib5" : {"mappings" : {"person" : {"properties" : {"address" : {"properties" : {"city" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"country" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"province" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}}},"age" : {"type" : "long"},"birthday" : {"type" : "date"},"name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}}}}} }我們口語看見address的描述,紅色框框都是address的描述
#如果是復雜的數組包含對象 PUT /lib6/person/1 {"persons" :[{"name":"lisi","age":27},{"name":"wangwu","age":26},{"name":"zhangsan","age":23}] }#底層存儲. { "persons.name":["lisi", "wangwu" ," zhangsan"], "persons.age":[27,26,23] }?
總結
以上是生活随笔為你收集整理的ElasticSearch的Object数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暗物质组成原理当然是不存在计算机,暗物质
- 下一篇: 叶县有没有计算机培训学校,叶县中等专业学