gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中映射关联数组

转载 作者:行者123 更新时间:2023-11-29 02:46:01 24 4
gpt4 key购买 nike

我是 elasticsearch 的新手,我想将我的一个字段映射到一个关联数组结构。

我目前拥有的:

索引 productsproduct 类型的一个产品:

{
"name":"Nexus 10",
"category":"Tablets",
"interests": {
"1":30,
"3":70
}
}

如您所见,interests 字段是一个关联数组。键是用户 ID,值是用户谈论该产品的次数

动态映射为我提供了:

{
"products":{
"mappings":{
"product":{
"properties":{
"category":{
"type":"string"
},
"interests":{
"properties":{
"1":{
"type":"long"
},
"3":{
"type":"long"
},
}
},
"name":{
"type":"string"
}
}
}
}
}
}

我想要什么:

因为我将在 interests 字段中有很多条目,所以我不希望动态映射映射每个 ID。

我的想法是能够在 interests 字段中查找特定的 user ID 以便我可以根据次数提高结果的分数这个特定的用户谈到了这个产品。

我希望能够映射这种结构。

你知道如何实现吗?

谢谢,

最佳答案

您将需要更改您的对象定义。

拥有基于实际 是有问题的,因为它会导致不断增长的映射,从而导致集群状态。它还会导致古怪的搜索。

这是一个非常常见的问题/问题,我在关于 Troubleshooting Elasticsearch searches, for Beginners 的文章中专门用了一节来讨论它。 .

您可能想要做的是使用嵌套文档或父子关系。如果您经常更新计数,您会希望使用父子关系,因为嵌套文档会导致对整个事物重新编制索引。不过,嵌套文档的搜索时间会更快,而且您很可能想以某种方式限制更新。

如果您像这样构建文档,您可以轻松地使用嵌套映射,并且最终不会为每个用户分配一个字段。

name: Nexus 10
category: Tablets
interests:
- user_id: 1
mentions: 30
- user_id: 3
mentions: 70

关于elasticsearch - 在 Elasticsearch 中映射关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912965/

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