首頁 > 軟體

Elasticsearch對映欄位資料型別及管理

2022-04-19 16:00:05

Elasticsearch對映管理

在Elasticsearch 6.0.0或更高版本中建立的索引只包含一個mapping type。 在5.x中使用multiple mapping types建立的索引將繼續像以前一樣在Elasticsearch 6.x中執行。 Mapping types將在Elasticsearch 7.0.0中完全刪除

一 對映介紹

在建立索引的時候,可以預先定義欄位的型別及相關屬性

Es會根據Json資料來源的基礎型別,猜測你想要對映的欄位,將輸入的資料轉變成可以搜尋的索引項。

Mapping是我們自己定義的欄位資料型別,同時告訴es如何索引資料及是否可以被搜尋

作用:會讓索引建立的更加細緻和完善

1.1 欄位資料型別

string型別:text,keyword

數位型別:long,integer,short,byte,double,float

日期型別:data

布林型別:boolean

binary型別:binary

複雜型別:object(實體,物件),nested(列表)

geo型別:geo-point,geo-shape(地理位置)

專業型別:ip,competion(搜尋建議)

1.2 對映引數

屬性描述適合型別
store值為yes表示儲存,no表示不儲存,預設為noall
indexyes表示分析,no表示不分析,預設為truetext
null_value如果欄位為空,可以設定一個預設值,比如"NA"(傳過來為空,不能搜尋,na可以搜尋)all
analyzer可以設定索引和搜尋時用的分析器,預設使用的是standard分析器,還可以使用whitespace,simple。都是英文分析器all
include_in_all預設es為每個檔案定義一個特殊域_all,它的作用是讓每個欄位都被搜尋到,如果想讓某個欄位不被搜尋到,可以設定為falseall
format時間格式字串模式date

二 建立索引

text型別會取出詞做倒排索引,keyword不會被分詞,原樣儲存,原樣匹配

mapping型別一旦確定,以後就不能修改了

#6.x的版本沒問題
PUT books
{
  "mappings": {
    "book":{
      "properties":{
        "title":{
          "type":"text",
         	"analyzer": "ik_max_word"
        },
        "price":{
          "type":"integer"
        },
        "addr":{
          "type":"keyword"
        },
        "company":{
          "properties":{
            "name":{"type":"text"},
            "company_addr":{"type":"text"},
            "employee_count":{"type":"integer"}
          }
        },
        "publish_date":{"type":"date","format":"yyy-MM-dd"}
      }
    }
  }
}

7.x版本以後

PUT books
{
  "mappings": {
    "properties":{
      "title":{
        "type":"text",
        "analyzer": "ik_max_word"
      },
      "price":{
        "type":"integer"
      },
      "addr":{
        "type":"keyword"
      },
      "company":{
        "properties":{
          "name":{"type":"text"},
          "company_addr":{"type":"text"},
          "employee_count":{"type":"integer"}
        }
      },
      "publish_date":{"type":"date","format":"yyy-MM-dd"}
    }
  }
}

插入資料測試:

PUT books/_doc/1
{
  "title":"大頭兒子小偷爸爸",
  "price":100,  
  "addr":"北京天安門",
  "company":{
    "name":"我愛北京天安門",
    "company_addr":"我的家在東北松花江傻姑娘",
    "employee_count":10
  },
  "publish_date":"2019-08-19"
}
#測試資料2
PUT books/_doc/2
{
  "title":"白雪公主和十個小矮人",
  "price":"99", #寫字串會自動轉換
  "addr":"黑暗森裡",
  "company":{
    "name":"我的家鄉在上海",
    "company_addr":"朋友一生一起走",
    "employee_count":10
  },
  "publish_date":"2018-05-19"
}

三 檢視索引

#檢視books索引的mapping
GET books/_mapping
#獲取所有的mapping
GET _all/_mapping

以上就是Elasticsearch對映欄位資料型別及管理的詳細內容,更多關於Elasticsearch對映欄位資料型別管理的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com