gpt4 book ai didi

elasticsearch动态字段嵌套检测

转载 作者:行者123 更新时间:2023-12-04 13:03:25 24 4
gpt4 key购买 nike

嗨,我试图在我的 Elasticsearch 中创建一个索引而不定义映射,所以我所做的是这个。

PUT my_index1/my_type/1
{
"group" : "fans",
"user" : [
{
"first" : "John",
"last" : "Smith",
"age" : "1",
"enabled": false
},
{
"first" : "Alice",
"last" : "White",
"age" : "10",
"enabled": true
}
]
}

如果这个 Elasticsearch 会为这个索引创建一个映射,结果是
{
"my_index1": {
"mappings": {
"my_type": {
"properties": {
"group": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"user": {
"properties": {
"age": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"enabled": {
"type": "boolean"
},
"first": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"last": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
}

如果您注意到属性用户没有嵌套的其他属性具有由 Elasticsearch 定义的自己的类型有没有办法自动映射对于用户属性应该是这样的
"user": {
type:"nested"
"properties": {
"age": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"enabled": {
"type": "boolean"
},
"first": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"last": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}

这是缺少的。我目前正在使用 nest

有没有办法定义动态映射来检测索引上新添加的数据是否嵌套?

最佳答案

默认情况下,Elasticsearch/Lucene 没有内部对象的概念。因此,它将对象层次结构扁平化为一个简单的字段名称和值列表。
上面的文档将在内部转换成一个看起来更像这样的文档:(更多细节见 Nested field type)

{
"group" : "fans",
"user.first" : [ "alice", "john" ],
"user.last" : [ "smith", "white" ]
}
这里没有漂亮的答案。一种常见的方法可能是使用动态模板来转换 objectnested (但是,副作用是所有 object 类型的字段都将更改为 nested 类型),
{
"mappings": {
"dynamic_templates": [
{
"objects": {
"match": "*",
"match_mapping_type": "object",
"mapping": {
"type": "nested"
}
}
}
]
}
}
另一种方法是在插入数据之前为字段指定映射。
PUT <your index>
{
"mappings": {
"properties": {
"user": {
"type": "nested"
}
}
}
}

关于elasticsearch动态字段嵌套检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47767125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com