我在 Spring Web 项目中使用 ElasticSearch 作为搜索服务,它使用传输客户端与 ES 通信。
我想知道是否存在可以从 JSON DSL 构造 QueryBuilder 的方法。例如,将此 boolean 查询 DSL JSON 转换为 QueryBuilder。
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
我需要这个方法,因为我必须从 web 前端接收用户的 bool 字符串输入,并将这个 bool 字符串解析为 QueryBuilder。但是它不适合使用 QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
。因为我们可能需要几个必须或非必须查询。
如果存在可以从 JSON DSL 构造 QueryBuilder 的方法,或者存在替代解决方案,这将容易得多。
PS:我找到了两种方法,可以将 DSL 字符串包装到 QueryBuilder 以进行 ES 搜索。 一种是 WrapperQueryBuilder,详情请参见此处。 http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html 另一个是 QueryBuilders.wrapperQuery(String DSL)。
最佳答案
你可以使用 QueryBuilders.wrapperQuery(jsonQueryString);
关于java - 在 ElasticSearch 中使用 Java API 时如何从 JSON DSL 构造 QueryBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859921/