正确使用Laravel Scout Elasticsearch“ babenkoivan / scout-elasticsearch-driver”包上的“不得”搜索规则的语法

问题描述

我正在尝试在Elasticsearch的顶部使用Laravel Scout和must_not在搜索中添加babenkoivan/scout-elasticsearch-driver子句。

想法是排除sold字段的时间戳超过14天或大于零的所有结果。

但是,我似乎无法获得正确的语法,并且在软件包存储库上也没有关于如何执行此操作的文档。我尝试像在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","col":97
   },"status":400
}

有什么想法可以让我们记录下来以备后用吗?谢谢!

解决方法

尝试将“term”替换为“match”。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...