gpt4 book ai didi

elasticsearch - 带有过滤器的ElasticSearch query_string无法获取结果

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

我有以下Elasticsearch查询(通常更大,但去除了导致问题的部分):

'query' => [
'bool' => [
'must' => [
'query_string' => [
'query' => $keywords,
'fields' => ['title']
]
],
'filter' => [
'term' => [
'school_id' => 1
]
]
]
]

但是,如果我删除过滤器,则可以正常工作,但是我想要的是仅过滤具有特定学校ID的搜索。

最佳答案

您为什么不选择过滤数据,而不是只过滤数据呢?

如果您想知道文档字段school_id是否为1,则从某种意义上说,过滤用于二进制结果。如果您只想获得结果,还有其他方法可以做到。

就您而言,我认为您只是“跳过”了mustbool,这就是查询失败的原因。

因此,您有2个选择,第一个选择如下:

GET /_search
{
"query": {
"bool": {
"must": {
"query_string": {
"default_field": "keywords",
"query": "title"
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"school_id": "1"
}
}
]
}
}
}
}
}

如果您希望对结果进行评分,可以使用以下方法:
GET /_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "keywords",
"query": "title"
}
},
{
"match": {
"school_id": {
"query": "1"
}
}
}
]
}
}
}

关于elasticsearch - 带有过滤器的ElasticSearch query_string无法获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53133812/

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