2016-11-16 1 views
2

Ich verwende @query, um die Elasticsearch Daten über JPQL abrufen. die Standardgröße 10 ist, erwähnte ich die Größe als 5 in @Query aber 10 Datensätze sind immer, aber ich brauche 5 records.how dieses ProblemZum Festlegen einer Größe in ElasticSearch mit @Query

@Query("\"from\":\"0\",\"size\":\"5\",{\"bool\":{\"must\":[{\"term\":{\"brand\":\"?0\"}}]}}}") 

Liste findByBrand (String Marke) zu lösen;

+0

Was ist, wenn Sie 'from' und' size' als 'int' angeben, ohne sie als' string' zu geben, ich meine ohne die Anführungszeichen? – Kulasangar

+0

Sie können auch versuchen, exakt dieselbe Abfrage in der elastischen Suche auszuführen und sehen, was passiert curl -XGET 'localhost: 9200/_search? Pretty' -d 'Abfragezeichenfolge' – wmlynarski

+0

Ich habe mich in int geändert, habe aber immer noch das gleiche Problem. Kann ich ein Codebeispiel haben? –

Antwort

1

Sie müssen einfach eine Pageable argument zu Ihrem findByBrand Methode hinzufügen:

@Query("{\"bool\":{\"must\":[{\"term\":{\"brand\":\"?0\"}}]}}") 
List findByBrand(String brand, Pageable pageable); 

Dann können Sie diese Methode wie folgt aufrufen:

List brands = findByBrand("mybrand", new PageRequest(0, 5)); 

Alternativ können Sie auch angeben, wie viele Ergebnisse, die Sie wollen in :

List brands = findTop5ByBrand(String brand); 
0

Ich schätze das prob Lem ist in dieser @Query Annotation. Erzeugt nur den Knoten "query". Sie würden erwarten, eine solche Abfrage zu haben.

{ 
    "from": "0", 
    "size": "5", 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "term": { 
      "brand": "?0" 
      } 
     } 
     ] 
    } 
    } 
} 

Aus diesem Grund können Sie nicht "from" und "size" in die Abfragezeichenfolge eingeben. Deshalb müssen Sie in anderen Antworten Umlagerungsfunktion verwenden, um die Ergebnisse zu erhalten. Die @ Query-Zeichenfolge in der Frage ist keine JSON-Zeichenfolge. Es fehlt "Abfrage": vor "bool", um richtig json zu sein.

Verwandte Themen