问题
QueryBuilder queryBuilder =
QueryBuilders.multiMatchQuery(deptIdList, "data.deptId", "modifiedData.deptId");
代码报错
{
"data": {
"errorCode": 500,
"message": "Elasticsearch exception [type=parsing_exception, reason=[multi_match] unknown token [START_ARRAY] after [query]]"
},
"status": 0,
"message": "Elasticsearch exception [type=parsing_exception, reason=[multi_match] unknown token [START_ARRAY] after [query]]"
}
原因:
QueryBuilder queryBuilder =
QueryBuilders.multiMatchQuery(deptIdList, "data.deptId", "modifiedData.deptId");
multiMatchQuery这个API,第一个参数不支持List类型, 虽然传List没报错, 但是往ES发送查询请求的时候就会抛异常出来
解决办法:
传一个字段, 如果你想多字段in查询,就用类似下面这样写法就可以了.
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
for (String deptId : stringList) {
boolQueryBuilder.should(QueryBuilders.multiMatchQuery(deptId, fieldNames));
}