【问题标题】:Elasticsearch get only file idsElasticsearch 仅获取文件 ID
【发布时间】:2018-05-22 20:52:16
【问题描述】:

在 elasticsearch 中是否有一种方法可以使用 JAVA API 仅获取给定查询返回的文档的 ID。

SearchResponse sr =  esClient.prepareSearch(index).setSize(resultSize).setScroll(new TimeValue(10000)).setQuery(fqb).setFetchSource(false).get();

但我得到空点击 (sr.getHits().hits[].length == 0) 尽管返回的点击总数为 0 (sr.getHits().getTotalHits == 2)。我知道 elasticsearch 没有返回任何内容,因为我将 fetch source 设置为 false,但 id 应该以某种方式可用。我目前的解决方案是:

SearchResponse sr =  esClient.prepareSearch(index).setSize(resultSize).setScroll(new TimeValue(10000)).setQuery(fqb).srb.setFetchSource("_id", null).get();

但是我认为这会从源中获取 _id 字段,并且为了速度我想尽可能避免这种情况。

谢谢, 伊利亚

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    .addField("_id") 添加到您的搜索中

    SearchResponse sr = esClient.prepareSearch(index)
                    .setSize(resultSize)
                    .setScroll(new TimeValue(10000))
                    .setQuery(fqb)
                    .setFetchSource(false)
                    .addField("_id")
                    .get();
    

    【讨论】:

      【解决方案2】:

      这段代码对我有用(elasticsearch 5.4):

      esClient.getClient()
        .prepareSearch(INCIDENT_INDEX_NAME)
        .setTypes(INCIDENT_DOCUMENT_TYPE)
        .setSize(1000)
        .setFetchSource(false)
        .get()
      
      Set<String> ids = new HashSet<>();
          response.getHits().forEach(hit -> ids.add(hit.getId()));
      

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 2021-10-14
        • 2017-04-07
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多