2017-07-04 3 views
0

je l'index suivant et requêtetermes de printemps de filtre ElasticSearch consomment la liste

@Document(indexName="idx", type="worker") 
public class Worker { 
    @Id 
    @Field(type = FieldType.Long) 
    private Long id; 
    @Field(type = FieldType.String) 
    private String firstName; 
    @Field(type = FieldType.String) 
    private String lastName; 
    --getter--setter 
} 


public interface WRepo extends ElasticsearchRepository<Worker, Long> { 

    @Query("{ 
     "query": {"match": {"firstName": "?0"}}, 
     "filter": {"terms" : {"id" : ***ids***}} 
    }") 
    Page<Worker> searchWorker(String firstName, List<Long> ids, Pageable pageable); 
} 

Nombre de ids est changeable, lors de l'ajout ids statique comme

{ "id": [101, 102, 103 ]}

fonctionne comme prévu, ma question est de savoir comment puis-je passer la liste id de signature de la méthode comme prenom champ

{ "prenom": "0"}

Répondre

0

J'ai changé corps de la méthode ci-dessous

@Query("{ 
    "query": {"match": {"firstName": "?0"}}, 
    "filter": {"terms" : {"id" : [?1]}} 
}") 
Page<Worker> searchWorker(String firstName, String ids, Pageable pageable); 

et faire ma demande comme:

repository.searchProduct("firstName", "101,102", pageable)