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

index_not_found_exception, reason=no such index [Sugestao]] - how pass index name to reactiveElasticsearchOperations.search

我在这个问题中看到了错误,这是真的:没有 Sugestao 索引。专有名称是 sugestao(记下 S 与 s)。

据我所知,我无法创建大写索引。到目前为止,一切都很好。问题是:"force" spring-data-elasticsearch 如何搜索 sugestao 而不是 Sugestao,因为我的模型是大写的 java class?我猜它会自动拾取大写字母。

在 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)

一些相关的子问题是:

我想你的实体上没有 @Document 注释 class?

@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 documentation for ReactiveSearchOperations 记录了不同的方法。