安装 PHP 扩展
我这里使用的是 composer 安装 elasticsearch-php。在 composer.json 文件中加入 "elasticsearch/elasticsearch": "~6.0",执行 composer update。
创建索引
public function index()
{
$client=ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$parms=[
'index'=>'q', //索引名
'body'=>[
'settings'=>[
'number_of_shards'=>5, //分片数量(后期不可更改)
'number_of_replicas'=>1 //副本数量(后期可更改)
],
'mappings'=>[
// 'table'=>[
// 'enabled'=>true //php版本7.0之后表名默认为‘_doc’,表名可以不加
// ],
//加载ik分词器的字段
'properties' => [
'fang_name' => [
'type' => 'text',
'analyzer' => 'ik_max_word',
'search_analyzer' => 'ik_max_word'
],
]
],
]
];
$response=$client->indices()->create($parms);
print_r($response);
}
添加数据
public function add()
{
$data=Fangs::select();
$data&&$data=$data->toArray();
foreach ($data as $k=>$v)
{
$da=$v;
// print_r($da);
$client=ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$parms=[
'index'=>'q',
'type'=>'_doc',
// 'body'=>$da
'body'=>[
'fang_name'=>$da['fang_name']
]
];
$response=$client->index($parms);
print_r($response);
}
}
高亮搜索
public function reads(Request $request)
{
$title=$request->param('fang_name');
$client = ClientBuilder::create()->build();
$params = [
'index' => 'q',
//'type' => '_doc',
'body' => [
'query' => [
'match' => [
'fang_name' => $title
]
],
'highlight' => [
'pre_tags' => ["<em style='color: lightcoral'>"],
'post_tags' => ["</em>"],
'fields' => [
"fang_name" => new \stdClass()
]
]
]
];
$results = $client->search($params);
$arr=[];
foreach ($results['hits']['hits'] as $k=>$v){
$arr[$k]['name']=$v['highlight']['fang_name'];
}
return json(['code'=>0,'msg'=>'成功','data'=>$arr]);
}
普通搜索
public function read()
{
$client=ClientBuilder::create()->build();
$params=[
'index'=>'q',
'type'=>'_doc',
'body'=>[
'query'=>[
'match'=>['fang_name'=>'李四']
]
]
];
$results = $client->search($params);
print_r($results);
}