簡體   English   中英

如何使用 Java 在 Elasticsearch 中返回所有結果?

[英]How to return all the results in Elasticsearch using Java?

我有一個在 elasticsearch 中索引的數據集。 (索引名稱:demoindex1,類型名稱:SearchTech)。 我想使用 Java 以 JSON 格式返回所有結果。 我的Java代碼如下:

import java.net.InetAddress;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.search.SearchHit;

public class App {

  public static void main(String[] args) throws Exception {
    Client client = TransportClient.builder().build().addTransportAddress(
        new InetSocketTransportAddress(InetAddress.getByName("localhost"),
            9300));

    SearchResponse scrollResp = client.prepareSearch("demoindex1")
        .setScroll(new TimeValue(60000)).setTypes("SearchTech").setSize(1000)
        .execute().actionGet();
    // Scroll until no hits are returned
    while (true) {

      for (SearchHit hit : scrollResp.getHits()) {
        System.out.println(hit.getSourceAsString()); //hit.get
      }
      scrollResp = client.prepareSearchScroll(scrollResp.getScrollId())
          .setScroll(new TimeValue(60000)).execute().actionGet();
      // Break condition: No hits are returned
      if (scrollResp.getHits().getHits().length == 0) {
        break;
      }
    }
  }
}

我的 java 程序返回每個命中的源部分。 但是我想在我們使用查詢 GET index/type/_search 進入 Elasticsearch 時獲取所有結果。 我需要返回 JSON 格式的結果數據集。 我在這里做錯了什么?

- 我已經閱讀了 elasticsearch 的 JAVA 文檔,但我找不到任何關於獲取所有結果數據集的信息。

謝謝你。

我不能發表評論,所以我只能在這里寫我的評論:我可能已經理解你的問題,但如果我錯了,請糾正我。

如果您想獲取 GET index/type/_search 的整個 JSON,為什么不嘗試 scrollResp.toString()? 然后,您可以使用豐富的可用庫之一(例如 com.fasterxml.jackson)從字符串中讀取 JSON 樹。

或者,如果您正在尋找命中的 _source 的 JSON,您可以使用這些庫將 hit.getSourceAsString() 的結果轉換為 JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM