gpt4 book ai didi

elasticsearch - Elasticsearch映射API未将我的列表显示为嵌套类型

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

Elasticsearch 无法将我的对象列表识别为嵌套类型。
我希望这种情况能够自动发生,而无需更新每个此类字段的映射。
我需要_mappings api的响应,以具有某种标识符来区分列表类型的属性。

例如:
当我在新的测试索引('mapping_index')上索引此类文档时

{
"text":"value",
"list":[{"a":"b","c":"d"},{"a":"q","c":"f"}]
}

和命中映射API

localhost:9200/mapping_index/_mapping



我懂了
{
"mapping_index": {
"mappings": {
"_doc": {
"properties": {
"list": {
"properties": {
"a": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"c": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"text": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}

我想要类似的东西
"type" : "nested"

对于此响应中的“列表”键,则可以传达另一个使用ES中存储的这些字段的服务,因为该“列表”是多值键。

我已经阅读了有关动态模板的文章,并认为它可能可以为我提供帮助,但我不确定
( https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html)。

任何帮助深表感谢。

最佳答案

您可以使用dynamic_templates

match_mapping_type:“对象”将采用任何对象类型将其更改为嵌套

{
"mappings": {
"dynamic_templates": [
{
"objects": {
"match": "*",
"match_mapping_type": "object",
"mapping": {
"type": "nested"
}
}
}
]
}
}

数据:
{
"list": [
{
"a": "b",
"c": "d"
},
{
"a": "q",
"c": "f"
}
]
}

结果:
 "index80" : {
"mappings" : {
"dynamic_templates" : [
{
"objects" : {
"match" : "*",
"match_mapping_type" : "object",
"mapping" : {
"type" : "nested"
}
}
}
],
"properties" : {
"list" : {
"type" : "nested",
"properties" : {
"a" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"c" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
}

关于elasticsearch - Elasticsearch映射API未将我的列表显示为嵌套类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62003876/

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