elasticsearch里的string類型被分為了text和keyword類型,下面詳細來介紹這兩種類型的使用場景:
text類型
- 分詞后進行索引
- 支持fields屬性,可以在fields中添加keyword子類型,以實現精確檢索
- 分詞器默認standard ,對於中文來說就是按字分詞
- 不支持聚合
- 對text類型添加了fields屬性,以支持精確檢索
{
"properties": {
"my_field": {
"type": "text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
當需要對關鍵字進行分詞檢索,短語檢索時使用text,可能是個長文本
keyword類型
- 支持精確檢索
- 可以實現類型關系型數據庫中like模糊檢索
- 支持聚合和排序
- 支持按字數建立索引,以便節約索引空間
{
"properties": {
"type": {
"ignore_above": 10, //大於10個字符將不進行索引,即無法檢索
"type": "keyword"
}
}
}
當需要對其進行精確查找時,如用戶名,身份證,電子郵件,電話等可以用keyword