请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Laravel开发简书es一章问题:access_control_exception

在我的课程中原本使用下面的template的方法来初始化,里面使用了es的一个动态类型推测


```

$param = [

            'json' => [

                'template' => config('scout.elasticsearch.index'),

                'mappings' => [

                    '_default_' => [

                        'dynamic_templates' => [

                            [

                                'strings' => [

                                    'match_mapping_type' => 'string',

                                    'mapping' => [

                                        'type' => 'text',

                                        'analyzer' => 'ik_smart',

                                        'fields' => [

                                            'keyword' => [

                                                'type' => 'keyword'

                                            ]

                                        ]

                                    ]

                                ]

                            ]

                        ]

                    ]

                ],

            ],

        ];

```


后来发现,在java1.9下会出现权限问题问题:


```

  {"error":{"root_cause":[{"type":"access_control_exception","reason":"access denied (\"java.io.FilePermission\" \"/Users/ (truncated...)  

```

解决的方法:

```

<?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 = 'es:init';


    /**

     * The console command description.

     *

     * @var string

     */

    protected $description = 'init 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()

    {

        // 创建template

        $client = new Client();


        $url = config('scout.elasticsearch.hosts')[0] . '/_template/tmp';


        try {

            $client->delete($url);

        } catch (\Exception $e) {

            $this->info("===delete模版出现错误==" . $e->getMessage());

        }



        $param = [

            'json' => [

                'template' => config('scout.elasticsearch.index'),

                'mappings' => [

                    'posts' => [

                        'properties' => [

                            'title' => [

                                'type' => 'text',

                                'analyzer' => 'ik_max_word',

                            ],

                            'content' => [

                                'type' => 'text',

                                'analyzer' => 'ik_max_word',

                            ]

                        ]

                    ]

                ],

            ],

        ];

        try {

            $client->put($url, $param);

        } catch (\Exception $e) {

            $this->info("===put模版出现错误==" . $e->getMessage());

        }



        $this->info("========= 创建模版成功 ========");


        // 创建index

        $url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');

        try {

            $client->delete($url);

        } catch (\Exception $e) {

            $this->info("===delete索引出现错误==" . $e->getMessage());

        }

        $param = [

            'json' => [

                'settings' => [

                    'refresh_interval' => '5s',

                    'number_of_shards' => 1,

                    'number_of_replicas' => 0,

                ],

                'mappings' => [

                    'posts' => [

                        '_all' => [

                            'enabled' => false

                        ]

                    ]

                ]

            ]

        ];

        try {

            $client->put($url, $param);

        } catch (\Exception $e) {

            $this->info("===put索引出现错误==" . $e->getMessage());

        }


        $this->info("========= 创建索引成功 ========");

    }

}


```


正在回答 回答被采纳积分+3

2回答

zjx2017 2018-05-16 19:16:35

谢谢老师!

登录后可查看完整回答登录/注册
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信