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'));
    }
}
一个偏向心理学即将转向产品的码农
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

直接写在这里吧,跳转第二页的时候没有带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年前 评论

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