java - Spring-data-elasticsearch“嵌套查询抛出[嵌套]未能在路径下找到嵌套对象”异常
问题描述
我有 2 个 POJO(Person 和 Car),其中一个由另一个推荐
@Document(indexName = "person", type = "user")
public class Person {
@Id
private String id;
private String name;
@Field(type = FieldType.Nested)
private Car car;
//getter and setter
}
这是 Car 对象,它被称为嵌套在 Person 对象中
public class Car {
private String name;
private String model;
//getter and setter
}
这是我的 REST 端点。在这里,我试图返回拥有给定车型的人。我将汽车模型作为路径变量发送,并且我正在创建一个QueryBuilder
对象
@RequestMapping(value = "/api/{carModel}")
public List<Map<String,Object>> search(@PathVariable final String carModel) {
QueryBuilder queryBuilder = QueryBuilders.nestedQuery(
"car",
QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("car.model", carModel)),
ScoreMode.None);
final SearchRequestBuilder searchRequestBuilder = client.prepareSearch("person")
.setTypes("user")
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setQuery(queryBuilder);
final SearchResponse response = searchRequestBuilder.get();
List<Map<String,Object>> resultList = new ArrayList<>();
List<SearchHit> searchHits = Arrays.asList(response.getHits().getHits());
for (SearchHit hit : searchHits) {
resultList.add(hit.getSourceAsMap());
}
return resultList;
}
有一个异常发生在final SearchResponse response = searchRequestBuilder.get();
说java.lang.IllegalStateException: [nested] failed to find nested object under path [car]
"nested" : {
"query" : {
"bool" : {
"must" : [
{
"match" : {
"car.model" : {
"query" : "gt200",
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : true,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : true,
"boost" : 1.0
}
}
}
],
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"path" : "car",
"ignore_unmapped" : false,
"score_mode" : "none",
"boost" : 1.0
}
}]; nested: IllegalStateException[[nested] failed to find nested object under path [car]]; }{[5uefqk2YT0ahmj3s-S1cvw][person][1]:
我该如何解决这个问题?
解决方案
请设置“ignore_unmapped”:真,很可能它会解决你的问题
推荐阅读
- jenkins - 在 Jenkins 管道中隐藏输出
- azure-data-factory - 如何使用 azuredatafactory 将多个文件从 azure blob 加载到 azure synapse(Dw)?
- php - 如何使用 PHP 从服务器下载文本文件?
- python - Python中的异步URL取消缩短
- oracle - Liquibase 忽略 Oracle DB 的 autoIncrement="true"
- flutter - 我应该如何应用此代码来处理颤振?
- jquery - 无法重新加载 Datatables 服务器数据
- c# - 在 WPF 调度程序调用中等待
- java - 在jenkins中执行时如何将参数从pom.xml动态传递给java类
- php - Laravel App\Mail - 为 foreach() 提供的参数无效 - 邮件