'setNestedPath(java.lang.String)' 已被弃用
时间: 2024-02-26 08:56:49 浏览: 129
java.lang.ExceptionInInitializerError异常的解决方法
`setNestedPath(String)` 方法已被弃用,它是为了支持早期版本的嵌套文档而添加的。如果您使用的是 Elasticsearch 7.0 或更高版本,建议使用 `QueryBuilder` 的 `nestedQuery` 方法来构建查询。以下是示例代码:
```java
import org.elasticsearch.index.query.QueryBuilders;
QueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery(
"nested_field",
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("nested_field.field1", "value1"))
.must(QueryBuilders.matchQuery("nested_field.field2", "value2")),
ScoreMode.None
);
```
在上面的示例中,我们首先使用 `QueryBuilders.nestedQuery` 方法创建一个嵌套查询,其中第一个参数是嵌套字段的名称,第二个参数是查询条件,第三个参数是计算得分的模式。在查询条件中,我们使用 `QueryBuilders.boolQuery` 创建一个布尔查询,并使用 `must` 方法添加两个匹配查询,分别针对嵌套字段中的 `field1` 和 `field2`。最后,我们将查询条件设置到 `nestedQuery` 方法中,并将其分配给 `nestedQueryBuilder` 变量。
当您想要使用嵌套查询时,建议使用 `nestedQuery` 方法而不是 `setNestedPath` 方法,因为后者已被弃用。
阅读全文