java - 如何使用 QueryStringQueryBuilder

标签 java elasticsearch nosql kibana

我尝试在一个非常简单的情况下使用 QueryStringQueryBuilder,但我不明白为什么我得到的结果与从 Kibana 得到的结果不同。我做错了什么?

基巴纳:

GET .../_search
{
    "query": {
        "query_string" : {
            "query" : "\"this is a query\"",
            "lenient": true,
            "default_operator": "OR"
        }
    }
}

Java:

private Optional<QueryStringQueryBuilder> parseQuery(String query) {
    if (query.equals("")) {
        return Optional.empty();
    }
    QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query);
    queryBuilder.lenient(true);
    queryBuilder.defaultOperator(Operator.OR);
    return Optional.of(queryBuilder);
}

来自 kibana 的结果:totalhits = 3336。来自 Java 的结果:totalhits = 10018。

编辑: 该方法调用parseQuery。输入是“这是一个查询”。

public Optional<SearchRequestBuilder> getRequestBuilderByQuery(SearchQuery query) {
        SearchRequestBuilder builder = getBuilderWithMaxHits(query.getMaxHits());
        builder.setFetchSource(Globals.getFIELDS(query.isIncludeStory()), new String[0]);
        parseQuery(query.getQuery()).ifPresent(builder::setQuery);
        return Optional.of(builder);
    }

最佳答案

我不知道在这种情况下您的输入参数“query”包含什么。

但我认为您想在 QueryStringQueryBuilder 中设置 queryBuilder.queryName(String queryName)

来自 JavaDocs:

queryName(String queryName): Sets the query name for the filter that can be used when searching for matched_filters per hit.

关于java - 如何使用 QueryStringQueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49126352/

相关文章:

java - {m}{n} ("exactly n times"两次)如何工作?

java - 当线程引用未传递时,下面的程序如何执行

elasticsearch - 如何减少 Logstash 的 RAM 使用量?

database - NoSql/Raven DB 实现最佳实践

elasticsearch - NoSQL用于全文检索的多站点归档日志记录

javascript - 高效查找和替换文档中的字符串

java - Netbeans 没有在 dist 文件夹中构建 lib 文件夹

Java 日期格式

elasticsearch - 如何在Elasticsearch中为关键字type的文本字段配置映射?

elasticsearch - 在 Elasticsearch 中,在哪里生成 keystore 并在 readonlyrest 插件中添加身份验证?