2

J'utilise le plugin Spring-data-elasticsearch pour récupérer des informations à partir du serveur elasticsearch. Ci-dessous est la classe référentiel:findBy méthode de requête ne pas woking au printemps données elasticsearch

public interface ActorRepository extends ElasticsearchRepository<Actor, Integer> { 
    public Actor findByActorId(Integer actorId); 
    public Iterable<Actor> findByFirstName(String firstName); 
    public Page<Actor> findByLastName(String lastName, Pageable pageable); 
    //public Iterable<Actor> findByLastName(String lastName); 
} 

Utilisation de ActorRepository:

@Resource 
ActorRepository actorRepository; 
Actor actor1 = this.actorRepository.findOne(actorId); // Working perfectly 
System.out.println("findOne Method :" + actor1); 
Iterable<Actor> actors = this.actorRepository.findAll(); // Works perfectly 
for(Actor actor : actors) { 
    System.out.println("Each Actor :" + actor); 
} 

Actor actor214 = this.actorRepository.findByActorId(214); // Not working. Reurning null 
System.out.println("findByActorId214 :" + actor214);  

Je reçois une réponse nulle de l'appel de méthode ci-dessus. Je ne sais pas ce qui me manque ici.

Pour votre information:

J'ai spécifié quelle méthode fonctionne et la méthode ne fonctionne pas à côté de l'appel de méthode comme commentaire.

S'il vous plaît laissez-moi savoir si vous aviez besoin de plus d'informations. Merci d'avance pour l'aide.

Répondre

0

Le problème que j'ai remarqué est dû à une mauvaise mise en correspondance du POJO par rapport aux données de recherche élastique. J'utilisais des objets imbriqués dans le POJO. Donc, je devrais spécifier les types de champs imbriqués comme FieldType.Nested en utilisant l'annotation @Field Spring. Après avoir spécifié tous ces mappings, cela a bien fonctionné.