本文主要介绍一下ES中的object类型介绍:
JSON文档本质上是分层的:文档可能包含内部对象,而内部对象又可能包含内部对象本身:
代码语言:javascript复制curl -X PUT "localhost:9200/my-index-000001/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"region": "US",
"manager": {
"age": 30,
"name": {
"first": "John",
"last": "Smith"
}
}
}
'
- 创建一个文档,也是一个JSON对象
- 该文档内部包含一个对象叫manager对象
- manager对象内部存在一个name的对象
在内部,此文档被索引为键-值对的简单平面列表,如下所示:
代码语言:javascript复制{
"region": "US",
"manager.age": 30,
"manager.name.first": "John",
"manager.name.last": "Smith"
}
下面的结构和上面的是等价的:
代码语言:javascript复制curl -X PUT "localhost:9200/my-index-000001?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"region": {
"type": "keyword"
},
"manager": {
"properties": {
"age": { "type": "integer" },
"name": {
"properties": {
"first": { "type": "text" },
"last": { "type": "text" }
}
}
}
}
}
}
}
'
Object Field的参数
- dynamic
- 是否应将新属性动态添加到现有对象
- 接受true(默认),false和strict
- enabled
- 为对象字段提供的JSON值应该被解析和索引(是true,默认值)还是应该被完全忽略(false)
- properties
- 对象中的字段,可以是任何数据类型,包括对象。可以将新属性添加到现有对象