使用聚合与laravel集成时,Elasticsearch会出错 . 这是我的代码:
$laws_y = Law::searchByQuery([
'multi_match' => [
'query' => $years,
'fields' => ["law_year"]
],
"aggs" => [
"group_by_law_year" => ["terms" => ['field' => ["law_year"]]]
]
]);
我收到以下错误:
GuzzleConnection.php第277行中的BadRequest400Exception:{“error”:{“root_cause”:[{“type”:“parse_exception”,“reason”:“无法解析搜索源 . 预期字段名称但得到[START_OBJECT]”} ],“type”:“search_phase_execution_exception”,“reason”:“所有分片失败”,“阶段”:“查询”,“分组”:true,“failed_shards”:[{“shard”:0,“index”: “default”,“node”:“BcRQOVhkS1SwTlvYPCEfHg”,“reason”:{“type”:“parse_exception”,“reason”:“未能解析搜索源 . 预期字段名称但得到[START_OBJECT]”}}}}, “状态”:400}
有谁知道解决方案?
1 回答
从the Elasticquent documentation开始,
searchByQuery
函数采用以下参数(请参阅source here):query
- 您的ElasticSearch查询aggregations
- 您希望返回的聚合 .sourceFields
- 仅返回设置为所选字段的限制limit
- 要返回的记录数offset
- 设置记录偏移量(用于分页结果)sort
- 您的排序查询在您的调用中,您需要将查询(第一个参数)与聚合(第二个参数)分开 . 这样做是这样的: