gpt4 book ai didi

elasticsearch - 使用Elasticsearch,如何将功能分数应用于有条件具有属性的文档

转载 作者:行者123 更新时间:2023-12-03 01:14:45 25 4
gpt4 key购买 nike

我有几个索引,其中一些具有特定的date属性,指示何时发布(date_publish),而其他则没有。我试图应用gauss函数来衰减很久以前发布的文档的分数。正确配置了相关索引,以将date_publish属性识别为日期。
我将查询设置如下,特别是过滤不具有该属性的文档:

{
"index": "index_contains_prop,index_does_not_contains_prop",
"body": {
"query": {
"function_score": {
"score_mode": "avg",
"query": {
"match_all": {}
},
"functions": [
{
"script_score": {
"script": {
"source": "0"
}
}
},
{
"filter": {
"exists": {
"field": "date_publish"
}
},
"gauss": {
"date_publish": {
"origin": "now",
"scale": "728d",
"offset": "7d",
"decay": 0.5
}
}
}
]
}
},
"from": 0,
"size": 1000
}
}

但是,查询错误与以下内容:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "unknown field [date_publish]",
"line": 1,
"col": 0
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "index_does_not_contains_prop",
"node": "1hfXZK4TT3-K288nIr0UWA",
"reason": {
"type": "parsing_exception",
"reason": "unknown field [date_publish]",
"line": 1,
"col": 0
}
}
]
},
"status": 400
}
我已经进行过多次RTFM,但我看不到任何差异-我也尝试将 exists条件包装在 bool:must对象中,但无济于事。
我是否误解了 filter参数的目的?

最佳答案

exists查询仅适用于索引映射中的字段。它将仅返回对该字段具有值的文档,但是该字段本身仍需要在映射中定义。这就是为什么会出现错误-index_does_not_contains_prop没有映射date_publish的原因。您可以使用put mapping API将此字段添加到没有该字段的索引中(它不会更改任何文档),然后您的查询应该可以使用。

关于elasticsearch - 使用Elasticsearch,如何将功能分数应用于有条件具有属性的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63076049/

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