gpt4 book ai didi

java - Elasticsearch:过滤查询不起作用

转载 作者:行者123 更新时间:2023-12-01 10:12:34 24 4
gpt4 key购买 nike

我一直在努力使用 java api 将我的查询更改为 Elasticsearch 中的过滤器。我已确保我正在运行搜索的字段设置为“not_analzed”。

这里是过滤器的java代码:

FilterBuilder andFilter = FilterBuilders.andFilter(FilterBuilders.termFilter("thread_name", keyword), FilterBuilders.termFilter("site_name", "test_site"));

QueryBuilder filteredQuery = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), andFilter);

SearchResponse threadResponse = client.prepareSearch("thread_and_messages").setQuery(filteredQuery).setSize(20).setFrom(firstRowOffset).execute().actionGet();

然后将其转换为 JSON 格式:

"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : {
"filters" : [ {
"term" : {
"thread_name" : "apple"
}
}, {
"term" : {
"site_name" : "test_site"
}
} ]
}
}
}

当我尝试进行任何搜索时,它不会返回我正在查找的文档,即 thread_name: Apple 和 site_name: test_site。

此外,当我使用curl 命令运行它时,它也找不到该文档。

任何人都可以看到我在这里做错了什么吗?

最佳答案

您可以使用must子句。这将执行and操作

 "query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "thread_name",
"query": "apple"
}
},
{
"query_string": {
"default_field": "site_name",
"query": "test_site"
}

}
]
}
}

关于java - Elasticsearch:过滤查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059126/

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