gpt4 book ai didi

elasticsearch - 为Elasticsearch索引模板设置动态模板属性时,可以使用通配符吗?

转载 作者:行者123 更新时间:2023-12-03 02:11:06 26 4
gpt4 key购买 nike

我有一个索引模板,该模板的属性包含一个名为meta的动态对象。
我还有一个动态模板规则,该规则将string类型的所有meta属性设置为keyword并将它们添加到另一个名为catch_all的字段中。
有一个特定的属性,extendedDescription,我不想被添加为关键字,我想显式地将其类型设置为文本。我通过为该设置添加一个明确的设置来做到这一点。
但是,该属性可以出现在我的元对象的不同父属性中,例如"meta.none.extendedDescription""meta.it.extendedDescription""meta.en.extendedDescription"中。
这就是我现在正在使用的方法,并且可以正常工作,但是您可以看到我必须为“extendedDescription”的每次出现“硬编码”设置。 (并与已有的动态模板配合使用)

{
"order": 0,
"index_patterns": [
"my-poi-*"
],
"settings": {},
"mappings": {
"doc": {
"dynamic_templates": [
{
"string_fields_all": {
"match_mapping_type": "string",
"match": "*",
"mapping": {
"analyzer": "analyzer_keyword",
"type": "keyword",
"copy_to": "catch_all"
}
}
}
],
"dynamic": false,
"properties": {
"name": {
"type": "keyword",
"copy_to": "catch_all"
},
"meta": {
"type": "object",
"dynamic": true,
"properties": {
"none": {
"type": "object",
"dynamic": true,
"properties": {
"extendedDescription": {
"type": "text",
"index": false
}
}
},
"it": {
"type": "object",
"dynamic": true,
"properties": {
"extendedDescription": {
"type": "text",
"index": false
}
}
},
"en": {
"type": "object",
"dynamic": true,
"properties": {
"extendedDescription": {
"type": "text",
"index": false
}
}
}
}
},
"catch_all": {
"type": "text"
}
}
}
},
"aliases": {}
}
有没有一种方法可以使用通配符或规则,无论此属性在我的元对象中出现的位置如何,都可以将该属性设置为文本? (它将始终具有 "meta.{some-lang-code}.extendedDescription"的模式
我试过了,但是没有用:
"meta": {
"type": "object",
"dynamic": true,
"properties": {
"*.extendedDescription": {
"type": "text",
"index": false
}
},

最佳答案

我认为您无法在顶级b / c上设置dynamic: false时这样做,那样可以预先防止任何未知的meta.*对象。我在这里可能是错的,但我认为确实是这样。
您可以尝试使用path_match:

{
"mappings": {
"doc": {
"dynamic_templates": [
{
"meta": {
"path_match": "meta.*", <--
"mapping": {
"type": "object",
"dynamic": true,
"properties": {
"extendedDescription": {
"type": "text",
"index": false
}
}
}
}
},
{
"string_fields_all": {
"match_mapping_type": "string",
"match": "*",
"mapping": {
"analyzer": "analyzer_keyword",
"type": "keyword",
"copy_to": "catch_all"
}
}
}
],
"dynamic": true, <--
"properties": {
"name": {
"type": "keyword",
"copy_to": "catch_all"
},
"catch_all": {
"type": "text"
}
}
}
}
}

关于elasticsearch - 为Elasticsearch索引模板设置动态模板属性时,可以使用通配符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64648866/

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