繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM