gpt4 book ai didi

ElasticSearch 高级 query_string 查询

转载 作者:行者123 更新时间:2023-12-02 23:11:20 27 4
gpt4 key购买 nike

我需要的是,elastic 应该在 中搜索多个字段并按字段优先级返回数据。

例如:对于搜索字符串 obil hon , elastic 应该在 fields[title, description, modelCaption] 中搜索并在最初找到 Mobile Phone 时返回数据在 Title领域,然后在其他领域。

我使用的查询:

{
"from": 0,
"query": {
"bool": {
"must": [
{
"query_string": {
"default_operator": "or",
"fields": [
"title^5",
"description",
"modelCaption",
"productFeatureValues.featureValue",
"productFeatureValues.featureCaption"
],
"query": "*obil* *hone*"
}
}
]
}
},
"size": 16
}


有什么建议?

谢谢!

最佳答案

您可以简单地使用 multi-match query查询多个字段,它支持提升特定字段,如 title在您的情况下和不同的运营商,如 OR在你的情况下。

适用于您的用例的示例 ES 查询:

{
"query": {
"multi_match" : {
"query" : "mobile phones",
"fields" : [ "title^5", "description","modelCaption","productFeatureValues.featureVal"],
"fuzziness" : "AUTO" --> Adding fuzziness to query
}
}
}

此处标题字段增加了因子 5,因此如果手机在标题字段中匹配,则得分会更高。

另请注意,您在查询字符串中使用通配符,这是非常昂贵的,因此如果可以,最好避免使用它们。

编辑:基于 OP 评论,包括 fuzziness parameter AUTO在查询更好的结果

关于ElasticSearch 高级 query_string 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60184357/

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