来源:
github
php"><?phpnamespace App\Http\Controllers;use Elastic\Elasticsearch\ClientBuilder;
use Illuminate\Support\Facades\DB;class ElasticSearch extends Controller
{public $client = null;public function __construct(){$this->client = ClientBuilder::create()->setHosts(["http://elasticsearch:9200"])->setBasicAuthentication('elastic', "123456")->build();}public function infos(){$response = $this->client->info();echo "<pre>";print_R($response);}// 创建分词索引public function esCreateIk(){$params = ['index' => 'ik','body' => ['mappings' => ['properties' => ['content' => ['type' => 'text','analyzer' => 'ik_max_word',],],],],];$ik = $this->client->indices()->create($params);dd($ik->asArray());}//判断索引是否存在public function isIndex(){$index = $this->client->indices()->exists(['index' => 'ik'])->asBool();dd($index);}//查看索引的的信息public function indexInfo(){$index = $this->client->indices()->getMapping(['index' => 'ik']);dd($index->asArray());}//删除索引及数据public function indexDelete(){$index = $this->client->indices()->delete(['index' => 'ik']);dd($index->asArray());}//删除索引下面id=1的数据public function esDelete(){$params = ['index' => 'ik','id' => 1,];$response = $this->client->delete($params);dd($response->asArray());}// 数据插入public function esCreateIkData(){$array = ['index' => 'ik','type' => 'doc','id' => 1,'body' => ['content' => '测试数据',],];$result = $this->client->index($array);dd($result);}// 批量插入数据public function eaCreateIkDataBulk(){set_time_limit(0);$data = DB::table('faq')->get();// 一条一条插入foreach ($data as $key => $value) {$array['body'][] = ['index' => ['_index' => 'ik', '_id' => $value->id]];$array['body'][] = ['content' => $value->content];}$result = $this->client->bulk($array);dd($result);}// 查询当前索引下有多少数据public function esCountData(){$params = ['index' => 'ik',];echo $this->client->count($params);}/*** 查询 ik 下面所有数据* 默认返回最多10数据*/public function esIkSearch(){$query = ['index' => 'ik',// 'id' => 1, // 查询id 的话就加这个字段];$result = $this->client->search($query);dd($result->asArray());}/*** 查询 ik 下面数据 加各种条件**/public function esIkSearchWhere(){$query = ['index' => 'ik','body' => ['query' => ['match' => ['content' => '被骗了几千块钱,有微信怎么要回来']]],'_source' => ['content'], //目前只有content 如果字段多了 想要那个返回哪个。可以不设置。默认返回所有数据 'size' => 5, //设置一次返回5条数据、可以不设置'from' => 2, //从第几条开始 类似于limit 5,2 可以不设置];$result = $this->client->search($query);dd($result->asArray());}/*** 修改数据* 把 ik 下面 id=1 的content 修改*/public function esIkedit(){$query = ['index' => 'ik','id' => 1,'body' => ['doc' => ['content' => '修改数据'],],];$result = $this->client->update($query);dd($result);}
}
php">Route::get("es/info", [ElasticSearch::class, "infos"]); //ES信息Route::get("es/create_ik", [ElasticSearch::class, "esCreateIk"]); // 创建分词索引Route::get("es/delete", [ElasticSearch::class, "esDelete"]); //删除索引的里面的某条数据Route::get("es/indexDelete", [ElasticSearch::class, "indexDelete"]); //删除索引Route::get("es/esCreateIkData", [ElasticSearch::class, "esCreateIkData"]); //插入数据Route::get("es/eaCreateIkDataBulk", [ElasticSearch::class, "eaCreateIkDataBulk"]); //批量插入数据Route::get("es/esIkSearch", [ElasticSearch::class, "esIkSearch"]); //返回所有数据Route::get("es/esIkSearchWhere", [ElasticSearch::class, "esIkSearchWhere"]); //加查询条件,返回所有数据