![](/img/trans.png)
[英]Elasticsearch and Laravel scout-elasticsearch-driver timestamps malformed error
[英]Correct syntax for “must not” search rule on Laravel Scout Elasticsearch “babenkoivan/scout-elasticsearch-driver” package
我正在尝试在 Elasticsearch 之上使用 Laravel Scout 和babenkoivan/scout-elasticsearch-driver
在我的搜索中添加一个must_not
子句。
这个想法是排除所有sold
字段的时间戳超过 14 天或大于零的结果。
但是,我似乎无法获得正确的语法,并且在 package 存储库中没有关于如何执行此操作的文档。 我尝试像在 Elasticsearch 文档中那样对其进行格式化,但这不正确。
这是一组规则:
public function buildQueryPayload()
{
$query = $this->builder->query;
return [
'must' => [
'query_string' => [
'query' => $query,
],
],
'must_not' => [
'term' => [
'visible' => 0
],
'range' => [
'sold' => [
'lte' => time() - 1209601, // 14 days ago plus 1 second
'gte' => 0
]
]
],
'should' => [
...
],
];
}
目前我收到Elasticsearch\Common\Exceptions\BadRequest400Exception
错误。
这是抱怨语法的错误:
{
"error":{
"root_cause":[
{
"type":"parsing_exception",
"reason":"[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line":1,
"col":97
}
],
"type":"parsing_exception",
"reason":"[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line":1,
"col":97
},
"status":400
}
有什么想法可以让我们为后代记录下来吗? 谢谢!
尝试用“匹配”替换“术语”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.