gpt4 book ai didi

arrays - 仅当值位于数组的第一行时,才匹配数组中的匹配字段

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

我有一个包含带有对象数组的文档的索引,称为产品。产品有一个名为feed_id的字段,我将其映射为products.feed_id(文本)。

但是,当我执行匹配查询时,我只是找到匹配的feed_id在数组第一行中的文档。我是否需要将产品映射为嵌套(我曾尝试过,但是还不行,我是否还需要将数组中的字段映射?)

我添加了映射/查询和未找到的示例文档。 (如果feed_id是数组的第1行,则会找到其他文档)

映射

{
"products-nl" : {
"aliases" : { },
"mappings" : {
"product" : {
"dynamic" : "false",
"properties" : {
"brand" : {
"type" : "text"
},
"brand_keyword" : {
"type" : "keyword"
},
"description_short" : {
"type" : "text"
},
"eancode" : {
"type" : "text"
},
"full_title" : {
"type" : "text"
},
"price" : {
"type" : "float"
},
"products" : {
"properties" : {
"category_string" : {
"type" : "text"
},
"feed_id" : {
"type" : "integer"
},
"full_shop_title" : {
"type" : "text"
},
"shop_title" : {
"type" : "keyword"
},
"shop_title_search" : {
"type" : "text"
},
"title" : {
"type" : "text"
}
}
},
"providers" : {
"type" : "nested"
},
"shop_amount" : {
"type" : "integer"
},
"shop_title_search" : {
"type" : "text"
},
"timestamp" : {
"type" : "date"
},
"title" : {
"type" : "keyword"
},
"total_price" : {
"type" : "float"
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1547042901221",
"number_of_shards" : "5",
"number_of_replicas" : "0",
"uuid" : "OUXvA4kiTJCs1L30ZoYv1w",
"version" : {
"created" : "6050499"
},
"provided_name" : "products-nl"
}
}
}

}

查询
GET products-nl/_search
{
"size": 3000,
"query": {
"match": {
"products.feed_id": 15621
}
}
}

文档(应该找到它是因为feed_id在其中,但是在产品的第3行上)。
{
"_source": {
"title": "Disney Frozen 18 Inch 28 cm Meisjes Terugtraprem Mintgroen",
"products": {
"0": {
"title": "Disney Frozen 18 Inch 28 cm Meisjes Terugtraprem Mintgroen",
"feed_id": "53"
},
"2": {
"title": "Disney Frozen 18 Inch 28 cm Meisjes Terugtraprem Mintgroen",
"feed_id": "3564"
},
"3": {
"title": "Kinderfiets 18 Inch Meisjes Disney Frozen 51861",
"feed_id": "15621"
},
"4": {
"title": "Disney Frozen meisjesfiets 18 inch",
"feed_id": "3251"
},
"5": {
"title": "Disney Frozen 18 Inch Meisjesfiets",
"feed_id": "6192"
},
"6": {
"title": "Disney Frozen 18 inch meisjesfiets 95 afgemonteerd",
"feed_id": "460"
},
"7": {
"title": "Disney Frozen 18 inch meisjesfiets",
"feed_id": "15882"
},
"8": {
"title": "Disney Frozen 95 Meisjes 2018 18inch Blauw",
"feed_id": "180"
},
"9": {
"title": "Disney Frozen 18 inch meisjesfiets 95 afgemonteerd",
"feed_id": "399"
}
}
}

}

最佳答案

我认为原因是(1)您已禁用动态映射,以及(2)products项的结构与定义的映射不匹配。因此,即使这些字段出现在_source字段(see documentation)中,也不会对其进行索引(即不可搜索)。

让我更精确一些。 products项的映射将匹配以下内容:

"products": [
{
"title": "Disney Frozen 18 Inch 28 cm Meisjes Terugtraprem Mintgroen",
"feed_id": "53"
},
...
{
"title": "Kinderfiets 18 Inch Meisjes Disney Frozen 51861",
"feed_id": "15621"
},
...
]

相反,您有:
"products": {
"0": {
"title": "Disney Frozen 18 Inch 28 cm Meisjes Terugtraprem Mintgroen",
"feed_id": "53"
},
...
"3": {
"title": "Kinderfiets 18 Inch Meisjes Disney Frozen 51861",
"feed_id": "15621"
},
...
}

,这是一个非常不同的映射。由于这些项目与映射不匹配,并且由于禁用了动态映射,因此无法搜索 products项目。

关于arrays - 仅当值位于数组的第一行时,才匹配数组中的匹配字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55183221/

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