当前位置: 首页 > 面试题库 >

如何使用Elastic的High Level Rest Client获取所有索引?

湛博易
2023-03-14
问题内容

我想要一个很好的,快速且容易的方法,使用它们的Java
REST客户端
在elasticsearch中获取所有索引。我目前能够通过抓住他们的较低级别的客户端来做到这一点,如下所示:

public void fetchIndices() throws IOException {
    List<String> indices = null;

    RestClient restClient = client.getLowLevelClient();
    Response response = null;
    try {
        response = restClient.performRequest("GET", "/_cat/indices?v");
    } catch (IOException e) {
        LOGGER.log(Level.WARNING, e.toString(), e);
    }

    InputStream inputStream = null;
    if (response != null) {
        try {
            inputStream = response.getEntity().getContent();
        } catch (IOException e) {
            LOGGER.log(Level.WARNING, e.toString(), e);
        }
    }

    if (inputStream != null) {
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        indices = new ArrayList<>();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            // Get tokens with no whitespace
            String[] tokens = line.split("\\s+");
            for (String token : tokens) {
                // TODO - make the startsWith() token configurable
                if (token.startsWith(SOME_TOKEN)) {
                    LOGGER.log(Level.INFO, "Found elasticsearch index " + token);
                    indices.add(token);
                    break;
                }
            }
        }
    }

    // Only update if we got data back from our REST call
    if (indices != null) {
        this.indices = indices;
    }
}

本质上,我只是按照其文档中的建议将其称为/_cat/indices?v端点。这可以正常工作,但是我想知道是否有使用Java
API的更好的方法。我似乎无法在他们当前的API中找到方法,但想知道是否有人知道我不知道的东西。必须使用s和各个s并不一定很糟糕,而只是想清理hacky字符串解析。InputStream``Reader


问题答案:

从Elasticsearch 7.5.0开始,您可以使用以下方法检索所有索引:

    GetIndexRequest request = new GetIndexRequest("*");
    GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);
    String[] indices = response.getIndices();


 类似资料:
  • 问题内容: 我正在尝试收集一个部门中的ID列表(数组) 给我一个jQuery对象,但不是一个真正的数组; 我可以 然后使用for循环将id属性放入另一个数组 或者我可以做 无论如何,我只是想看看jQuery中是否有速记来做到这一点。 问题答案: //但是我无法真正获取ID并将其分配给不在范围内的数组?(或者我可以) 是的你可以! 请注意,当您处于正确的轨道上时,Sighohwell和cletus都

  • 问题内容: 如何获得Python中索引名称的列表?这是我到目前为止的内容: 问题答案: 搜索有关使用库进行检索的信息时,会出现此问题。接受的答案说可以使用,但该方法已删除(截至2017年)。要获取,您可以使用以下代码:

  • 问题内容: 如何通过传递ID来通过jQuery获得select的所有选项? 我只是想获得他们的价值观,而不是文字。 问题答案: 采用:

  • 问题内容: 我一直在到处寻找它,但仍然找不到解决方案:如何从mySQL列中获取所有值并将它们存储在数组中? 例如:表名称:客户列名称:ID,名称行数:5 我想获得此表中所有5个名称的数组。我该怎么做?我正在使用PHP,而我只是想: 然后使用 PHP函数将这些值存储在数组中。 问题答案: 请注意,此答案已过时! 从PHP7开始,mysql扩展不再可用。如果要在PHP7中使用旧的mysql函数,则必须

  • 问题内容: 我发现了Java:查找方法的所有调用者–获取所有调用特定方法的方法,这提示如何查找特定方法的所有调用者。 那么,如何获得静态字段的用户呢? 例如,当我有静态的,并且它与访问,如何获得 ? 问题答案: 该示例基于org.eclipse.jdt.internal。*类,由于JDT SearchEngine API具有全功能,因此我认为您无需花费太多精力。就您而言,下面的代码就足够了:

  • 问题内容: 有一个具有子元素的元素,那些子元素又具有子元素,依此类推。我想获取所有作为该元素后代的元素。谢谢。 问题答案: 试试这个: (Java) (C#)