我在这个问题中粘贴了错误,这是真的:没有Sugestao索引。正确的名称是sugestao(注意S与s(。
据我所知,我无法创建大写的索引。目前为止,一切都好。问题是:由于我的模型是大写的 java 类,如何"强制"spring-data-elasticsearch 搜索 sugestao 而不是 Sugestao?我想它会自动拾取大写字母。
在 Spring-Data-Elasticsearch-3.2.6(弹性版本 6.x(中,我可以看到找到一种清晰的设置方式
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(弹性版本 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");
ReactiveSearchOperations
的 API 文档记录了不同的方法。