gpt4 book ai didi

elasticsearch - elasticsearch 中的 query_string 与组匹配

转载 作者:行者123 更新时间:2023-11-29 02:51:48 26 4
gpt4 key购买 nike

这样的查询有什么区别:

"query": {
"bool": {
...
"should": [
{
"match": {
"description": {
"query": "test"
}
}
},
{
"match": {
"address": {
"query": "test",
}
}
},
{
"match": {
"country": {
"query": "test"
}
}
},
{
"match": {
"city": {
"query": "test"
}
}
}
]
}}

还有那个:

"query": {
"bool": {
...
"should": [
{
"query_string": {
"query": "test",
"fields": [
"description",
"address",
"country",
"city"
]
}
}
]
}}

性能、相关性?

提前致谢!

最佳答案

查询是根据字段分析器进行分析的(除非您在查询本身中指定分析器),因此使用单个查询查询多个字段并不一定意味着只分析一次查询。

请记住,query_string 支持 lucene query syntax : AND 和 OR 运算符,查询特定字段,通配符,短语查询等因此需要对其进行解析,我认为这在性能方面不会有太大差异,但它容易出错并可能导致错误。如果您不需要所有这些功能,请坚持使用匹配查询,如果您想对多个字段执行相同的查询,请查看 multi_match query ,它执行您对 query_string 所做的操作,但在内部转换为多个匹配查询。

此外,如果您比较多个匹配查询的输出和您的 query_string 返回的分数可能会完全不同。使用 bool 查询可以有效地构建一个 lucene bool 查询,而 query_string 默认使用 "use_dis_max":"true",这意味着它在内部使用 dis_max query默认情况下。使用 multi_match 查询也会发生同样的情况。如果将 use_dis_max 设置为 false,则将在内部使用 bool 查询。

关于elasticsearch - elasticsearch 中的 query_string 与组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937680/

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