Elasticsearch分页问题[求大佬解答]

扩展包是 babenkoivan/scout-elasticsearch-driver
自己的博客最近查看一下发现搜索跳下一页直接报错:

{"error":{"root_cause":[{"type":"parsing_exception","reason":"[query_string] unknown token [VALUE_NULL] after [query]","line":1,"col":51}],"type":"x_content_parse_exception","reason":"[1:51] [bool] failed to parse field [must]","caused_by":{"type":"parsing_exception","reason":"[query_string] unknown token [VALUE_NULL] after [query]","line":1,"col":51}},"status":400}

自然而然的想到了Es的问题,应该出现在分页上了,求大佬解答!!!

搜索的控制器

<?php

namespace App\Http\Controllers;

use App\Articles;
use App\Models\Article;
use Illuminate\Http\Request;

class SearchController extends Controller
{
    public function index(Request $request)
    {
//         $articles = Article::where('title', 'like', "%{$request->keyword}%")->paginate();

        $articles = Articles::search($request->keyword)->paginate();


        return view('default.search_article', compact('articles'));
    }
}
一个偏向心理学即将转向产品的码农
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

直接写在这里吧,跳转第二页的时候没有带keyword参数多了个query参数,最后在分页链接上追加参数具体代码

public function index(Request $request)
    {
        // 这种也可以但个人感觉不太好
        // if (!$request->keyword) {
        //     $request->keyword = $request->input('query');
        //     // code...
        // }
        $articles = Articles::search($request->keyword)->paginate();
        $articles->appends(['keyword' => $request->keyword]);
        return view('default.search_article', compact('articles'));
    }

虽然是解决了,但感觉这两种方法都不太好,等有时间具体了解一下

2年前 评论
讨论数量: 3

好像是 Es 的查询语句有问题,打印 Es 的查询语句看看

2年前 评论
working (楼主) 2年前

直接写在这里吧,跳转第二页的时候没有带keyword参数多了个query参数,最后在分页链接上追加参数具体代码

public function index(Request $request)
    {
        // 这种也可以但个人感觉不太好
        // if (!$request->keyword) {
        //     $request->keyword = $request->input('query');
        //     // code...
        // }
        $articles = Articles::search($request->keyword)->paginate();
        $articles->appends(['keyword' => $request->keyword]);
        return view('default.search_article', compact('articles'));
    }

虽然是解决了,但感觉这两种方法都不太好,等有时间具体了解一下

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!