Spring Data Elasticsearch 是 Spring Data 项目的一个子项目,用于简化与 Elasticsearch 的集成。Elasticsearch 是一个分布式搜索和分析引擎,广泛用于全文搜索、结构化搜索和分析。
Spring Data Elasticsearch 支持多种类型的实体和查询,包括:
@Document
注解标记的类,表示存储在 Elasticsearch 中的文档。ElasticsearchRepository
,提供基本的 CRUD 操作和自定义查询方法。“嵌套查询抛出[嵌套]在路径下找不到嵌套对象”Exception 通常是由于 Elasticsearch 中的嵌套对象路径不正确导致的。嵌套对象是指在 Elasticsearch 文档中嵌套的 JSON 对象。
@Nested
注解。@Nested
注解import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.annotations.Nested;
@Document(indexName = "example")
public class ExampleDocument {
@Id
private String id;
@Field(type = FieldType.Text)
private String title;
@Nested
private List<NestedObject> nestedObjects;
// getters and setters
}
public class NestedObject {
@Field(type = FieldType.Text)
private String name;
@Field(type = FieldType.Integer)
private int age;
// getters and setters
}
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.query.Criteria;
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
import org.springframework.data.elasticsearch.core.query.Query;
public List<ExampleDocument> findNestedObjectsByName(String name) {
Criteria criteria = new Criteria("nestedObjects.name").is(name);
Query query = new CriteriaQuery(criteria);
return elasticsearchOperations.queryForList(query, ExampleDocument.class);
}
在创建索引时,确保嵌套对象的映射正确配置。可以通过 Elasticsearch 的 REST API 手动创建索引和映射,或者使用 Spring Data Elasticsearch 的 @Document
注解自动创建。
@Document(indexName = "example", createIndex = true)
public class ExampleDocument {
// ...
}
通过以上步骤,可以解决“嵌套查询抛出[嵌套]在路径下找不到嵌套对象”Exception 的问题。
领取专属 10元无门槛券
手把手带您无忧上云