当前位置: 首页 > 知识库问答 >
问题:

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

王长卿
2023-03-14

我在Spring Web项目中使用ElasticSearch作为一个搜索服务,它使用传输客户端与ES通信。

我想知道是否有一种方法可以从JSON DSL构造QueryBuilder。例如,将此bool查询DSL JSON转换为QueryBuilder。

{
    "query" : {
        "bool" : {
            "must" : { "match" : {"content" : "quick"},
            "should": { "match": {"content" : "lazy"}
        }
    }
}

我需要这个方法,因为我必须从web前端接收用户的布尔字符串输入,并将这个布尔字符串解析到QueryBuilder。但是,它不适合使用querybuilders.boolquery().must(matchQB).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)。

共有1个答案

尉迟景福
2023-03-14

您可以使用querybuilders.wrapperQuery(jsonQueryString);

 类似资料:
  • 我正在使用spring-data-elasticsearch。我已经使用带有许多子标准的标准构建了大多数查询条件。现在我想为嵌套字段包含一个简单的查询条件。但是使用uery_stringAPI来标准corms查询,这不适用于嵌套字段。我期待嵌套查询。 如何在没有NativeSearchQuery的情况下使用条件来支持这一点? 嵌套映射 我想查询“ae.su.keyword”字段。构建标准使用此字段

  • 我正在寻找一种从Kafka主题中删除(完全删除)已消费记录的方法。我知道有几种方法可以做到这一点,例如更改主题的保留时间或删除Kafka logs文件夹。但我要寻找的是一种使用Java API删除某个主题的一定数量记录的方法,如果可能的话。 我试过测试AdminClient API,特别是AdminClient。deleteRecords(recordsToDelete)方法。但如果我没弄错的话,

  • 我对kotlin中的收藏感到困惑。 结构有点复杂。 现在我想得到一张地图,<code>地图 我被困在这里

  • 问题内容: 如何使用call_user_func_array调用类的构造函数 这是不可能的: 因为如果构造函数具有参数,则 新的 将失败。 约束:我不控制必须实例化的类,也不能修改它们。 不要问我为什么要做这个疯狂的事情,这是一个疯狂的考验。 问题答案: 您可以像这样使用反射: 从PHP 5.6.0起,也可以将运算符用于此目的。

  • 问题内容: 我遍历了许多博客和网站,了解如何配置Elasticsearch for MongoDB来索引MongoDB中的集合,但是它们都不是直接的。 请向我说明逐步安装Elasticsearch的过程,其中应包括: 组态 在浏览器中运行 我将Node.js与express.js结合使用,因此请相应地提供帮助。 问题答案: 这个答案应该足以使您开始按照本教程使用MongoDB,Elasticsea

  • 商店1 第1节 第2节 2号商店 null null null 我会在'store'属性中设置区段,因为不同的商店有不同的区段。 到目前为止我认为一切都是正确的。我的问题是如何将用户分配到商店中的特定区段。会是user.company.store[3].section[1]吗?如果一个节/存储区被删除,那么节/存储区的indexOf值不会改变吗?人们通常是怎么做这样的事情的?我基本上是在创建与文件