1

我目前正在使用spring-data-elasticsearchAPI。我需要它来处理一个有多个索引指向它的别名。
每个索引都存储相同的类型,但只是日常存储(第一个索引是星期一的结果,第二个是星期二的结果......)。

由于别名的原因,某些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))
4

0 回答 0