gpt4 book ai didi

java - 通过Java API进行Elasticsearch查询

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

我正在使用以下 Elasticsearch 查询来获取详细信息,

{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"bool": {
"should": [
{"match": {
"val": "GET"
}}]
}
}
}
}
}

它工作正常,并按要求给出了结果。

我想通过java执行相同的查询并获得相同的结果并尝试了以下操作,

 getClient().prepareSearch(esIndex)
.setQuery(QueryBuilders.queryStringQuery(QUERY)).execute().actionGet();

它不返回数据并抛出一些查询格式错误的异常。

是否有可用的 Java API 可以执行相同的查询?

注意:可以在 java api 中创建 boolquery 和聚合构建器并执行相同的操作。我只是好奇想找到一种方法直接通过elasticsearch java api执行这个查询

最佳答案

如果你确实想使用查询字符串查询,你的查询必须遵循 Query String Syntax :

getClient().prepareSearch(esIndex)
.setQuery(QueryBuilders.queryStringQuery("val: \"GET\""))
.execute()
.actionGet();

如前所述,您应该使用提供的 QueryBuilders 而不是字符串来构建查询。即使对于复杂的查询,这也将使您的代码保持干净和可读。

getClient().prepareSearch(esIndex)
.setQuery(QueryBuilders.boolQuery()
.should(QueryBuilders.matchQuery("val", "GET"))
.execute()
.actionGet();

关于java - 通过Java API进行Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43025563/

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