我目前正在使用spring-data-elasticsearch
API。我需要它来处理一个别名,指向它的几个索引
每个索引都存储相同的类型,但是日常存储(第一个索引是星期一的结果,第二个是星期二的结果......)。
由于别名,某些ElasticsearchRepository
方法无法正常工作。我目前设法进行搜索(findOne() equivalent
),但我无法更新实体
我不知道如何实现这一目标,我查看了文档和样本..但是我被卡住了。
我的资料库
public interface EsUserRepository extends ElasticsearchRepository<User, String>
{
@Query("{\"bool\" : {\"must\" : {\"term\" : {\"id_str\" : \"?0\"}}}}")
User findByIdStr(String idStr);
}
我的实体
@Document(indexName = "osintlab", type = "users")
public class User
{
// Elasticsearch internal id
@Id
private String id;
// Just a test to get the real object index (_index field), in order to save it
@Field(index = FieldIndex.analyzed, type = FieldType.String)
private String indexName;
// Real id, saved under the "id_str" field
@Field(type = FieldType.String)
private String id_str;
@Field(type = FieldType.String)
private List<String> tag_user;
}
我测试了什么
final IndexQuery indexQuery = new IndexQuery();
indexQuery.setId(user.getId());
indexQuery.setObject(user);
esTemplate.index(indexQuery);
userRepository.index(user));
userRepository.save(user))