我目前正在使用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))