es~text與keyword的選擇

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章