关于es:init报错

来源:9-7 使用laravel的Command实现搜索引擎索引和模版的建立

TypeMoon

2017-12-31

如果注释掉 2个 $client->put($url,$param);  会正常

http://img.mukewang.com/szimg/5a48c7b90001240405770080.jpg

如果去掉注释 则会失败

Client error: `PUT http://127.0.0.1:9200/template/tmp` resulted in a `400 Bad Request` response:

No handler found for uri [/template/tmp] and method [PUT]

http://img.mukewang.com/szimg/5a48c7770001147d09350172.jpg

其他同学的问题我也看了 貌似解决不了!

这是 es:init的代码!

<?php

namespace App\Console\Commands;

use GuzzleHttp\Client;
use Illuminate\Console\Command;

class ESInit extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    //protected $signature = 'command:name';
    protected $signature = 'es:init';
    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Inir Laravel es for post';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     * 实际要做的事
     * @return mixed
     */
    public function handle()
    {
        // TO DO
        //创建template
        $client = new Client();
        $url = config('scout.elasticsearch.hosts')[0].'/template/tmp';
        //$client->delete($url);
        $param = [
            'json'=>[
                'template'=>config('scout.elasticsearch.index'),
                'mappings'=>[
                    '_default_'=>[
                        'dynamic_templates'=>[
                            [
                                'strings'=>[
                                    'match_mapping_type'=>'string',
                                    'mapping'=>[
                                        'type'=>'text',
                                        'analyzer'=>'ik_max_word',
                                        'fields'=>[
                                            'keyword'=>[
                                                'type'=>'keyword'
                                            ]
                                        ]
                                    ]
                                ]
                            ]
                        ]
                    ]
                ],
            ],
        ];
        $client->put($url,$param);
        $this->info("=========Template Successful!=========");
        // 创建index 
        $url = config('scout.elasticsearch.hosts')[0].'/'.config('scout.elasticsearch.index');
        //$client->delete($url);
        $param = [
            'json'=>[
                'settings'=>[
                    'refresh_interval'=>'5s',//更新时间
                    'number_of_shards'=>1,
                    'number_of_replicas'=>0
                ],
                'mappings'=>[
                    '_default_'=>[
                        '_all'=>[
                            'enabled'=>true//是否显示
                        ]
                    ]
                ]
            ]
        ];
        
        $client->put($url,$param);
        $this->info("=========Index Successful!=========");
        
    }
}


写回答

2回答

轩脉刃

2018-01-18

你好,留一下你的qq,我联系你具体看下,这个我也看不出来是什么问题,不知道是否和环境有关

0
1
TypeMoon
非常感谢!
2018-03-28
共1条回复

TypeMoon

提问者

2018-03-28

已解决

0
0

Laravel快速开发简书

Laravel最新特性结合Mysql异步消息队列、ElasticSearch搜索引擎、Debugbar调试利器开发简书

1218 学习 · 613 问题

查看课程