gpt4 book ai didi

elasticsearch - 无法使用 field_value_factor 在嵌套查询中找到字段的字段映射器

转载 作者:行者123 更新时间:2023-12-02 23:35:06 25 4
gpt4 key购买 nike

这是映射:

PUT books-index
{
"mappings": {
"books": {
"properties": {
"tags": {
"type": "nested",
"fields": {
"name": {
"type": "string"
},
"weight": {
"type": "float"
}
}
}
}
}
}
}

然后使用 field_value_factor 进行嵌套查询失败并出现错误
GET books-index/books/_search
{
"query": {
"nested": {
"path": "tags",
"score_mode": "sum",
"query": {
"function_score": {
"query": {
"match": {
"tags.name": "world"
}
},
"field_value_factor": {
"field": "weight"
}
}
}
}
}
}

错误: “嵌套:ElasticsearchException [无法找到字段 [权重] 的字段映射器]”

有趣的是,如果索引中有一本书带有标签 - 没有错误并且查询运行良好。

为什么会这样?当索引中没有带有标签的书籍时,如何防止错误?

有任何想法吗?

谢谢!

附言github上也有一个问题: https://github.com/elastic/elasticsearch/issues/12871

最佳答案

看起来您的映射不正确。

之后 PUT获取您提供的映射,尝试执行 GET books-index/_mapping , 它将显示以下结果:

"books-index": {
"mappings": {
"books": {
"properties": {
"tags": {
"type": "nested"
}
}
}
}
}

它缺少名称和重量!映射的问题是您使用了 fields而不是 properties ,或者您忘记输入第二个 properties key 。

我修改了您的映射以反射(reflect)您在标签中寻找嵌套名称和类型,因为看起来这就是您的查询想要的。
PUT books-index
{
"mappings": {
"books": {
"properties": {
"tags": {
"type": "nested",
"properties": { // <--- HERE!
"name": {
"type": "string"
},
"weight": {
"type": "float"
}
}
}
}
}
}
}

关于elasticsearch - 无法使用 field_value_factor 在嵌套查询中找到字段的字段映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006610/

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