7

Tôi đang cố gắng sử dụng REST dữ liệu Spring cho elasticsearch. Trình điều khiển REST dựng sẵn cho POST dường như không hoạt động: Tôi gặp lỗi khi cố gắng đăng tài liệu. Vấn đề này rất dễ dàng để tái sản xuất: Tôi tạo ra một thực thể đơn giản:Dữ liệu Spring REST dường như không hoạt động với elasticsearch

@Document(indexName = "user", type = "user", shards = 1, replicas = 0, refreshInterval = "-1") 
public class Customer { 

    @Id 
    private String id; 

    @Field(type = FieldType.String, store = true) 
    private String firstName; 

    @Field(type = FieldType.String, store = true) 
    private String lastName; 
    // getters and setters are skipped 
} 

Repository:

public interface UserRepository extends ElasticsearchRepository<User, String> { 
} 

Khi tôi cố gắng để có được tất cả người dùng Tôi nhận được câu trả lời:

curl -X GET "http://localhost:9000/users" 
{ 
    "_links" : { 
    "self" : { 
    "href" : "http://localhost:9000/users{?page,size,sort}", 
    "templated" : true 
}, 
"search" : { 
    "href" : "http://localhost:9000/users/search" 
} 
}, 
"page" : { 
"size" : 20, 
"totalElements" : 0, 
"totalPages" : 0, 
"number" : 0 
} 
} 

nhưng khi tôi đang cố thêm người dùng:

curl -i -X POST -H "Content-Type:application/json" http://localhost:9000/users -d '{"id":"4e9e62aa-7312-42ed-b8e4-24332d7973cd","firstName":"test","lastName":"test"}' 

Tôi nhận được một lỗi:

{"cause":null,"message":"PersistentEntity must not be null!"} 

Dường như có một vé Jira mở cho vấn đề này mà không có bất kỳ ý kiến: Jira Issue

Tôi tự hỏi nếu nó có thể để tránh phải viết điều khiển CRUD REST cho Elasticsearch dữ liệu mùa xuân?

Trả lời

4

Cách giải quyết là thêm

@EnableElasticsearchRepositories(repositoryFactoryBeanClass = RestElasticsearchRepositoryFactoryBean.class) 

chú thích đến lớp ứng dụng nơi RestElasticsearchRepositoryFactoryBean được định nghĩa là

@SuppressWarnings("rawtypes") 
public class RestElasticsearchRepositoryFactoryBean 
    extends org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean { 
    @SuppressWarnings("unchecked") 
    @Override 
    public void afterPropertiesSet() { 
     setMappingContext(new org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext()); 
     super.afterPropertiesSet(); 
    } 
} 
+0

trình! Dank bạn. – Tarion

Các vấn đề liên quan