39.初識搜索引擎_mapping複雜數據類型以及object類型數據底層結構大揭祕

1、multivalue field

 

{ "tags": [ "tag1", "tag2" ]}

建立索引時與string是一樣的,數據類型不能混

2、empty field

 

null,[],[null]

3、object field

舉例

有這樣一條document數據,它在底層中的結構是怎樣的呢?

 

PUT /company/employee/1
{
  "address": {
    "country": "china",
    "province": "guangdong",
    "city": "guangzhou"
  },
  "name": "jack",
  "age": 27,
  "join_date": "2017-01-01"
}

(1)查看mapping數據類型

 

GET /company/_mapping/employee
-------------------------------結果-------------------------------
{
  "company": {
    "mappings": {
      "employee": {
        "properties": {
          "address": {
            "properties": {
              "city": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "country": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "province": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          },
          "age": {
            "type": "long"
          },
          "join_date": {
            "type": "date"
          },
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

(2)數據底層結構解釋

其中,field參數中address就是object類型。
這條document底層的結構

 

{
  "address": {
    "country": "china",
    "province": "guangdong",
    "city": "guangzhou"
  },
  "name": "jack",
  "age": 27,
  "join_date": "2017-01-01"
}
-------------------------底層的結構如下-------------------------
{
    "name":              [jack],
    "age":               [27],
    "join_date":         [2017-01-01],
    "address.country":   [china],
    "address.province":  [guangdong],
    "address.city":      [guangzhou]
}

(3)更復雜的object類型底層結構

如:

 

{
    "authors": [
        { "age": 26, "name": "Jack White"},
        { "age": 55, "name": "Tom Jones"},
        { "age": 39, "name": "Kitty Smith"}
    ]
}
-------------------------底層的結構如下-------------------------
{
    "authors.age":    [26, 55, 39],
    "authors.name":   [jack, white, tom, jones, kitty, smith]
}

 

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