Elasticsearch 映射類型之數組類型(arrays)


在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個結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM