1、ES常用數據類型
1.1 Numbers 數字類型
涉及到的類型很多,具體查閱文檔 常用的有long,integer,short,double,float
1.2 Keywords 關鍵字類型
關鍵字分爲以下幾種:
(1)、keyword
用於索引結構化內容,如ID、電子郵件地址、主機名、狀態碼、郵政編碼或標籤。
說明:keyword不會被分詞,keyword類型的字段只能通過精確值(exact_value)搜索到,常用於排序、過濾、聚合.
注:數據Id應該使用keyword而不是int或者string等類型,因爲keyword會被索引,性能更好.
(2)、constant_keyword
對於始終包含相同值的關鍵字字段。
(3)、wildcard
用於非結構化機器生成的內容。通配符類型針對具有大值或高基數的字段進行了優化。
1.3 Dates 日期類型
日期類型分爲以下幾種:
(1)、date 日期類型
自動識別機制如下幾種
i、Json字符串格式爲“2015-01-01”或“2015/01/01 12:10:30”,會被識別爲date類型
ii、時間戳
其餘注意事項請參考官網
(2)、date_nanos
納秒類型
如果毫秒的精度不夠,可以使用納秒類型.
1.4 alias
索引別名類型
1.5 binary
二進制類型
二進制類型接受二進制值作爲Base64編碼字符串。默認情況下,該字段不存儲且不可搜索:
2.1、Range 範圍類型
範圍字段類型表示上限和下限之間的連續值範圍。例如,一個範圍可以表示10月份的任何日期,也可以表示0到9之間的任何整數。它們使用運算符gt或gte定義下限,使用運算符lt或lte定義上限。它們可以用於查詢,並且對聚合的支持有限。唯一支持的聚合是直方圖和基數。
其餘幾種範圍類型,請參考官方文檔
3、ES文本搜索類型
3.1、text
fields 文本類型 常用於文本搜索,但是不能創建正排索引
索引全文值的字段,例如電子郵件正文或產品描述。對這些字段進行分析,即在索引之前,通過分析器將字符串轉換爲單個術語的列表。分析過程允許Elasticsearch在每個全文字段中搜索單個單詞。文本字段不用於排序,很少用於聚合(儘管重要的文本聚合是一個顯著的例外)。文本字段最適合非結構化但可讀的內容。如果需要索引非結構化機器生成的內容,請參閱映射非結構化內容。
如果您需要索引結構化內容,如電子郵件地址、主機名、狀態代碼或標記,則可能更應該使用關鍵字字段。
文本類型分爲兩種:
(1)、text
全文內容(如電子郵件正文或產品描述)的傳統字段類型。
說明:當字段被設置成文本類型後,字段會被分析(經過過濾器和分詞器操作),會被分詞,在生成倒排索引前,字段會被分詞,分成一個個詞項,一般無法用作排序和聚合操作.(text無法創建正排索引(用於排序和聚合),因爲創建正排索引,會消耗大量的堆空間,尤其是加載高基數字段(經過去重之後,仍然有大量的重複的數據)時),字段一旦被加載到堆中,會在生命週期內保持在那裏,同樣加載數據也是非常的消耗資源,會產生延遲. es默認不會給test創建正排索引
(2)、match_only_text
一種空間優化的文本變體,禁用評分,在需要位置的查詢上執行速度較慢。它最適合索引日誌消息。
其餘關於文本類型的介紹,參考官方文檔.
其餘關於搜索的類型參看官方說明.
4、ES對象關係類型 Objects and relational types
4.1 object
對象類型
一般用於嵌套類型,如User和UserType的嵌套關係,前提是兩者都是獨立的結構.JSON文檔本質上是分層的:文檔可能包含內部對象,而內部對象本身也可能包含內部對象
4.2 nested
對象數組類型
一般用於報存對象數組類型,嵌套類型是對象數據類型的專門版本,允許以相互獨立的方式對對象數組進行索引。
4.3 flattened
默認情況下,對象中的每個子字段分別映射和索引。如果子字段的名稱或類型事先未知,則會動態映射它們。flattened
將整個對象映射爲單個字段。給定一個對象,展平映射將解析出其葉值,並將其索引到一個字段中作爲關鍵字。然後可以通過簡單的查詢和聚合來搜索對象的內容。但是也有限制,如只允許基本查詢,不支持數值範圍查詢或高亮顯示,具體參閱文檔.
4.4 join
關聯關係類型
連接數據類型是一個特殊字段,用於在相同索引的文檔中創建父/子關係。關係部分定義了文檔中一組可能的關係,每個關係都是父名稱和子名稱。
具體查看官方文檔
5、ES特殊數據類型
5.1 geo_point
、geo_shape
、point
、shape
4大類型 常用於地理位置搜索具體查看官方文檔.
5.2 completion
配合Completion Suggester使用
自動完成建議類型,類似於百度搜索框輸入一段文字後,會出現一個建議的下拉框內容,該類型就是實現這個功能用的.
完成提示器提供鍵入時自動完成/搜索功能。這是一種導航功能,用於在用戶鍵入時引導用戶找到相關結果,從而提高搜索精度。它不是爲了拼寫糾正,或者你指的是像術語或短語提示器這樣的功能。理想情況下,自動完成功能應該與用戶鍵入的速度一樣快,以提供與用戶已鍵入內容相關的即時反饋。因此,完成建議器針對速度進行了優化。該建議器使用能夠快速查找的數據結構,但構建成本高,並且存儲在內存中。
其餘類型官方文檔查閱 https://www.elastic.co/guide/en/elasticsearch/reference/8.3/mapping-types.html