У меня есть сущность Article , и внутри нее есть вложенное свойство, скажем, Метаданные .
Мне нужно сосчитать все статьи, которые имеют определенный поле внутри этого вложенного свойства, скажем, indexed , присвоенное, например, 1.
Java Фрагмент документа:
@Document(indexName = "article", type = "article", useServerConfiguration = true, createIndex = false)
@Setting(settingPath = "/mappings/settings.json")
@Mapping(mappingPath = "/mappings/articles.json")
public class Article {
// getters and setters, empty constructor are omitted for brevity
@Id
private String id;
private Metadata metadata;
// remainder of the body is omitted
}
Фрагмент Metadata.class
public class Metadata {
// getters and setters, empty constructor are omitted for brevity
private Integer indexed;
// remainder of the body is omitted
}
Запрос, который я использую для получения статей, которые удовлетворяют заданным критериям и которые я помещаю в качестве значения @org.springframework.data.elasticsearch.annotations.Query
поверх пользовательского метода :
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "metadata",
"query": {
"bool": {
"must": [
{
"match": {
"metadata.indexed": 1
}
}
]
}
}
}
}
]
}
}
}
Мой пользовательский фрагмент репозитория Spring Data ElasticSearch с пользовательским методом:
public CustomSpringDataElasticsearchRepository extends ElasticsearchRepository<Article, String> {
@Query("The query from above")
Long countByMetadata_Indexed(int value);
}
Когда я использую метод хранилища, показанный выше, я get java.lang.IllegalArgumentException: Expected 1 but found n results
.
Пользовательский метод хранилища данных Spring Elasticsearch (без @Query) возвращает 0 (также версия без подчеркивания 0 ) хотя он должен все вернуть правильно.
Как получить правильные результаты с помощью Sprin g хранилище данных ElasticSearch? Почему пользовательский метод без @Query также не работает?
UPD : Используемая версия spring-data -asticsearch составляет 3.1.1.RELEASE .