java - 在 ElasticSearch 中使用 Java API 时如何从 JSON DSL 构造 QueryBuilder?

标签 java json elasticsearch dsl

我在 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/

相关文章:

java - 在 java repaint() 中调用 2 个函数,然后调用 func1(),但首先调用 func1(),然后调用 repaint()。为什么?

java - EurekaServer com.netflix.discovery.shared.transport.TransportException : Cannot execute request on any known server on Docker

json - Three.js:减少模型文件大小的方法?

elasticsearch - Kibana Maps:结果仅限于前10000个文档

elasticsearch - Elasticsearch-如何结合 bool 和范围过滤器

java - 有像 JPA 3 这样的版本吗?

java - SQL 错误 :Column Index Out of Range, 2>1

javascript - 在 JavaScript 中操作 JSON 和组键

jquery 使用数组序列化输入

c# - Elasticsearch NEST创建不区分大小写的索引