在ElasticSearch Java客户端中使用ignore_unavailable参数

Rui*_*ras 4 java elasticsearch

我正在使用ElasticSearch java客户端作为Maven依赖项:

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>1.7.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我正在使用多索引进行搜索,我正在IndexMissingException使用参数:' ignore_unavailable ' 来忽略它,但我不知道如何使用它,并且没有找到关于此的文档.

https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-index.html(关于ignore_unavailable的链接)

我正在创建这样的搜索:

    SearchRequestBuilder srb = ess.getClient()
        .prepareSearch(generateIndex(query)) //generateIndex returns a array
        .setTypes("mytype")
        .setSearchType(SearchType.DFS_QUERY_AND_FETCH)
        .setPostFilter(FilterBuilders.rangeFilter("Time")
                .from(time1.toInstant(ZoneOffset.UTC))
                .to(time2.toInstant(ZoneOffset.UTC))
        )   
        .setFrom(0).setSize(RESULT_MAX).setExplain(true)
        //putHeader don't work...
       .putHeader("ignore_unavailable", true);   
Run Code Online (Sandbox Code Playgroud)

我如何在这里使用ignore_unavalilable?

小智 7

你需要使用setIndicesOptions(IndicesOptions)- 例如.

.prepareSearch(generateIndex(query))
.setIndicesOptions(IndicesOptions.fromOptions(true, false, false, false))
Run Code Online (Sandbox Code Playgroud)

您也可以使用IndicesOptions.lenientExpandOpen()而不是调用fromOptions().