elasticsearch - 在Elasticsearch中使用filteredQuery和userquery的QueryBuilder

标签 elasticsearch elasticsearch-plugin

我正在使用这段代码从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();

关于elasticsearch - 在Elasticsearch中使用filteredQuery和userquery的QueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200603/

相关文章:

java - 如何在elasticsearch中找出索引创建日期

python-3.x - python3 UnicodeEncodeError : 'charmap' codec can't encode characters in position 95-98: character maps to <undefined>

elasticsearch-plugin - 如何将Elasticsearch Index导出到本地

elasticsearch - Elasticsearch:安全问题

elasticsearch - Elasticsearch:使用特殊字符打开和关闭括号进行搜索

Elasticsearch 字段名区分大小写

python - 如何在elasticsearch中结合query_string和时间戳范围

elasticsearch copy_to 字段与聚合的行为不符合预期

php - 通过查询Elasticsearch-PHP Client 2.0+更新

elasticsearch - 在带有Should子句的Elasticsearch中使用SearchTemplate进行日期范围查询