Spring elasticsearch данных поддерживает большую часть общего набора функций elasticsearch включая вложенные, внутренние объекты и Родитель ребенка (в последнее время)
, когда вы сказали, что хотите использовать вложенные данные (внутренний объект), пожалуйста, убедитесь, поскольку elasticsearch имеет два понятия Inner Object и Nested Object.
Подробное описание можно найти на сайте managing relationship in elasticsearch
Вложенный документ Пример
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
}
автомобилей Entity
public class Car {
private String name;
private String model;
//setters and getters
}
Настройка данных
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);
Индексация
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);
Поиск
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);
вы можете найти больше тестовых данных о вложенных и Inner объекта в Nested Object Tests
Где вы размещаете пример? кажется, вы не можете вводить пользовательские методы внутри elasticsearchrepository для реализации. – Maxrunner
Также как вы используете разбиение на страницы с этим, можно ли использовать класс Pageable? – Maxrunner
Я не могу найти примеры для обновления данных –