index_not_found_exception, reason=no such index [Sugestao]]。- 如何将索引名传递给reactiveElasticsearchOperations.search。

问题描述 投票:0回答:1

我在这道题中得到了错误的粘贴,这是真的:没有Sugestao索引。正确的名称是Sugestao(注意S与s)。

据我所知,我不能用大写创建索引。到目前为止还不错。问题是:由于我的模型是一个大写的java类,如何 "强迫 "spring-data-elasticsearch搜索sugestao而不是Sugestao?我想它是自动拾取大写字母的。

在Spring-Data-Elasticsearch-3.2.6(Elastic版本6.x)中,我可以看到find有一个明确的方法来设置,如

reactiveElasticsearchOperations.find(
query.build(),
Sugestao.class, // this is the model class
"this_is_my_index_name" //here I can write the name of the index with lower case
)

我如何在Spring-data-Elasticsearch.4(Elastic版本7.x)中使用类似的方法,我正在尝试搜索,因为find已经被废弃了。

    Flux<SearchHit<Sugestao>> fluxSearchHits =
            reactiveElasticsearchOperations.search(query.build(), Sugestao.class, "sugestao");

而我得到

ReactiveSearchOperations类型中的方法search(Query,Class,Class)不适用于参数(NativeSearchQuery,Class,String)

一些相关的子问题是

  • 似乎在Find的废弃版本中,我可以传递一个字符串,而现在在搜索中,它期待一个类。但那是哪个类来设置索引名呢?

  • 也许我可以在其他spring-data-elasticsearch配置中设置索引的名称,或者设置为使用小写,然后我就可以在不添加索引名称的情况下进行搜索。

    Flux> fluxSearchHits = reactiveElasticsearchOperations.search(query.build(), Sugestao.class)。

elasticsearch spring-data reactive spring-data-elasticsearch elasticsearch-7
1个回答
1
投票

我想你没有 @Document 注解在你的实体类上?

@Document(indexName="sugestao")
public class Sugestao {
  // class stuff
}

那么你可以调用

Flux<SearchHit<Sugestao>> fluxSearchHits =
        reactiveElasticsearchOperations.search(query.build(), Sugestao.class);

如果你想明确地指定索引名称,你可以使用

Flux<SearchHit<Sugestao>> fluxSearchHits =
        reactiveElasticsearchOperations.search(query.build(), 
                Sugestao.class, IndexCoordinates.of("sugestao");

API文档 ReactiveSearchOperations 有不同方法的记载。

© www.soinside.com 2019 - 2024. All rights reserved.