【问题标题】:Jest elastic search Query builder query with multiple match strings具有多个匹配字符串的 Jest 弹性搜索查询生成器查询
【发布时间】:2018-08-27 14:00:54
【问题描述】:

我正在尝试使用 Jest 在 Java 中查询弹性搜索。我正在使用查询生成器来构建查询。

QueryBuilder matchQuery = QueryBuilders.boolQuery()
            .must(QueryBuilders.matchQuery("id", "3434"))
            .must(QueryBuilders.matchQuery("name", "name"))
            .must(QueryBuilders.matchQuery("action", "login"))
            .must(rangeQuery);

 //i have this map now 
 Map<String , String> parameters = new HashMap<>();
    parameters.put("id", "3433");
    parameters.put("name", "name");
    parameters.put("action", "login");

如果有人能告诉我这是否可以动态构建,就像 matchQueries 一样,那就太好了。例如,我会有三个匹配查询,但我会有更多。我可以将匹配查询属性放在地图中。但是,如果我重复这一点,我们将如何定义这个 boolQuery ?有人对此有任何想法吗?

寻找这样的东西

 QueryBuilder matchQuery = QueryBuilders.boolQuery()
            .must(QueryBuilders.matchQuery(map.key, map.value))

            .must(rangeQuery);

但是我将如何动态地构建它?

【问题讨论】:

    标签: java elasticsearch elastic-stack elasticsearch-jest


    【解决方案1】:

    您可以简单地遍历您的地图并将每个条件添加到查询中,如下所示:

    BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();    
    for(String key : parameters.keySet()){
      boolQuery.must(QueryBuilders.matchQuery(key, parameters.get(key)));
    }
    boolQuery.must(rangeQuery);
    

    【讨论】:

    • 酷,很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2018-08-02
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多