【问题标题】:Specify fields with Elasticsearch Transport client使用 Elasticsearch Transport 客户端指定字段
【发布时间】:2015-06-09 00:42:58
【问题描述】:

有没有办法指定 ES 通过传输客户端返回的字段,特别是使用 BoolQueryBuilder?

使用 REST API,看起来很简单,例如Can I specify the result fields in elasticsearch query?

但不确定如何使用传输客户端进行操作。查看 BoolQueryBuilder 类,我没有看到任何字段定义。

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    使用 Java,您的代码应如下所示:

    SearchResponse searchResponse = client.prepareSearch("yourindex")
            .setQuery(boolQuery().must(matchAllQuery(), ...))
            .addFields("field1","field2")
            .get();
    

    【讨论】:

    • 实际上,如果我将 .addFields() 调用添加到链中,我会返回一个 SearchHits 列表,但它们都是空的,即 getSource() 是空的。知道发生了什么吗?
    • 因为您请求显式字段,所以您还必须使用 fields 命令获取值:result.getHits().getHits()[0].fields().get("name")
    • 谢谢杰特罗。 stackoverflow.com/questions/30476493/… 中建议了另一种方法,它看起来更干净,似乎对我有用。使用这种方法有什么缺点吗?
    • 没有turar,这是一个很好的解决方案。
    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2012-10-24
    • 2014-12-09
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2016-09-06
    • 2015-02-19
    相关资源
    最近更新 更多