Frühling Daten Elasticsearch unterstützt die meisten der gemeinsamen Feature-Set von Elasticsearch einschließlich Verschachtelte, Inner Objekte und Eltern Kind (vor kurzem)
, wenn Sie sagte, dass verschachtelte Daten (innere Objekt), stellen Sie sicher, verwenden möchten, als elasticsearch hat zwei Konzept Inner Object und Nested Object.
Ausführliche Erklärung kann bei managing relationship in elasticsearch
Nested Dokument Beispiel
Person Entity
@Document(indexName = "person" , type = "user")
public class Person {
@Id
private String id;
private String name;
@Field(type = FieldType.Nested)
private List<Car> car;
// setters-getters
}
Car Entity
finden
public class Car {
private String name;
private String model;
//setters and getters
}
Einrichten Daten
Person foo = new Person();
foo.setName("Foo");
foo.setId("1");
List cars = new ArrayList();
Car subaru = new Car();
subaru.setName("Subaru");
subaru.setModel("Imprezza");
cars.add(subaru);
foo.setCar(cars);
Indexing
IndexQuery indexQuery = new IndexQuery();
indexQuery.setId(foo.getId());
indexQuery.setObject(foo);
//creating mapping
elasticsearchTemplate.putMapping(Person.class);
//indexing document
elasticsearchTemplate.index(indexQuery);
//refresh
elasticsearchTemplate.refresh(Person.class, true);
Suche
QueryBuilder builder = nestedQuery("car", boolQuery().must(termQuery("car.name", "subaru")).must(termQuery("car.model", "imprezza")));
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
List persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
können Sie mehr Testfälle über Nested und innere Objekt an Nested Object Tests
finden
Wo setzen Sie das Suchbeispiel? Es sieht so aus, als könnten Sie keine benutzerdefinierten Methoden in das ElasticSearch-Repository zur Implementierung einfügen. – Maxrunner
Auch wie verwenden Sie Paginierung mit diesem, können wir die Klasse Ausgebbare verwenden? – Maxrunner
Ich kann keine Beispiele finden, um die Daten zu aktualisieren –