来源:
github
<?php
namespace 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());
}
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);
}
public function esIkSearch()
{
$query = [
'index' => 'ik',
];
$result = $this->client->search($query);
dd($result->asArray());
}
public function esIkSearchWhere()
{
$query = [
'index' => 'ik',
'body' => [
'query' => [
'match' => [
'content' => '被骗了几千块钱,有微信怎么要回来'
]
]
],
'_source' => ['content'],
'size' => 5,
'from' => 2,
];
$result = $this->client->search($query);
dd($result->asArray());
}
public function esIkedit()
{
$query = [
'index' => 'ik',
'id' => 1,
'body' => [
'doc' => [
'content' => '修改数据'
],
],
];
$result = $this->client->update($query);
dd($result);
}
}

Route::get("es/info", [ElasticSearch::class, "infos"]);
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"]);