我在这道题中得到了错误的粘贴,这是真的:没有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)。
我想你没有 @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
有不同方法的记载。