gpt4 book ai didi

elasticsearch - 我是如何达到 index.mapping.total_fields.limit 的?

转载 作者:行者123 更新时间:2023-12-03 00:45:20 26 4
gpt4 key购买 nike

我正在将数据加载到 Elasticsearch,我得到了 index.mapping.total_fields.limit .我完全不明白为什么会出现这个错误,我正在加载到 ES 的类看起来像:

@Document(type = "article", indexName = "data")
data class Product(
@Id
val id: String? = null,
val category: String,
val name: String,
val imagesUrls: List<String>,
val parameters: Map<String, List<String>>?
)
我已经添加了大约 3k 的产品,之后我收到了这个错误。你能给我解释一下,为什么我得到这个?我以为我的 Product 类中只有 5 个字段。

最佳答案

这种行为源于您没有指定参数属性的存储方式。让我们假设,在一个实体中,paraneters 是从“foo”到某些数据的映射。这将导致创建以下映射(仅显示相关部分):

{
"article": {
"mappings": {
"properties": {
"parameters": {
"properties": {
"foo": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
如果下一个实体有 parameters从 bar 到某物,为“bar”创建了一个新的映射条目。一旦 map 中的键数超过限制,就会出现该错误。
2020 年 8 月 3 日编辑:
你可以创建一个类 Parameter :
data class Parameter(
val key: String,
val values: List<String>
)
并更改 Product 中的相应属性上课
@Field(type = FieldType.Nested)
val parameters: List<Parameter>
您失去了 Map 的唯一 key 保证。已经并且需要在代码中的某处检查这一点。
就个人而言,我会在我的应用程序中有一个域层,我将在其中使用 Map和一个持久层,我使用存储数据所需的特定版本 - 这里使用 List .在将数据从域转换到持久层并返回时,我会进行这种转换。

关于elasticsearch - 我是如何达到 index.mapping.total_fields.limit 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63220491/

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