在elasticsearch中使用filteredQuery和userquery的QueryBuilder

QueryBuilder with filteredQuery and userquery in elasticsearch

我正在使用这段代码从 elasticSearch 获取数据:-

        QueryBuilder qb;
        if (query == null || query.trim().length() <= 0) {
            qb = QueryBuilders.matchAllQuery();
        } else {
            qb = QueryBuilders.queryString(query.replaceAll(" ", " OR ").replaceAll(",", " AND ").replaceAll("!", " NOT "));

        }
        org.elasticsearch.action.search.SearchResponse searchHits =  node.client()
                .prepareSearch(name)
                .setQuery(qb)
                .addHighlightedField("file.filename")
                .addHighlightedField("content")
                .addHighlightedField("meta.title")
                .setHighlighterPreTags("<span class='badge badge-info'>")
                .setHighlighterPostTags("</span>")
                .addFields("*", "_source")
                .execute().actionGet();

这工作正常。但现在我想用这个查询过滤结果。就像我们在 filteredQuery 中所做的那样。

 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/and-filter.html

如何使用 queryBuilder 添加 FilterBuilder?

    QueryBuilder qb;
    if (query == null || query.trim().length() <= 0) {
        qb = QueryBuilders.matchAllQuery();
    } else {
        qb = QueryBuilders.queryString(query.replaceAll(" ", " OR ")
                .replaceAll(",", " AND ").replaceAll("!", " NOT "));
    }

    FilterBuilder fb = FilterBuilders.andFilter(.....);
    FilteredQueryBuilder fqBuilder = QueryBuilders.filteredQuery(qb, fb);

    org.elasticsearch.action.search.SearchResponse searchHits = node
            .client()
            .prepareSearch(name)
            .setQuery(fqBuilder)
            .addHighlightedField("file.filename")
            .addHighlightedField("content")
            .addHighlightedField("meta.title")
            .setHighlighterPreTags("<span class='badge badge-info'>")
            .setHighlighterPostTags("</span>").addFields("*", "_source")
            .execute().actionGet();