Elasticsearch 對映型別之陣列型別(arrays)
阿新 • • 發佈:2020-10-26
在Elasticsearch中,沒有專用的array資料型別。預設情況下,任何欄位都可以包含零個或多個值,但是,陣列中的所有值都必須具有相同的資料型別。
這一點是區別於nested的,nested指的物件的集合。而arrays則是單一型別的陣列集合而已。
此外,不需要專門的型別類定義陣列型別。
例如:
- 字串陣列
["one", "two"]
- 整數陣列
[ 1,2]
- 陣列的陣列:
[ 1[ 2,3]]
,這是相當於[ 1,2,3]
動態新增欄位時,陣列中的第一個值確定field type。所有後續值必須具有相同的資料型別,或者至少必須能夠將後續值強制轉換為相同的資料型別。像[1, 3, "some word"]
陣列型別對映建立示例如下。
PUT example PUT example/docs/_mapping { "properties": { "id":{"type": "long"}, "name": {"type": "text"}, "age":{"type":"integer"}, "hobby": {"type": "text"} } }
注意:陣列欄位的定義,不是array哦。
陣列型別的物件新增示例如下。
PUT example/docs/1 { "id": 111,"name":"張三", "age":22, "hobby":["籃球","摔跤"] } PUT example/docs/2 { "id": 222, "name":"張三2", "age":21, "hobby":["籃球222","摔跤222"] }
陣列型別的搜尋示例如下。
#搜尋愛好有籃球的 GET example/docs/_search { "query": { "match": { "hobby": "籃球" } } } # 最後搜出來2個結果 GET example/docs/_search { "query": { "match": { "hobby": "22" } } } # 最後搜出來1個結果