一、安装
以下es基于6.4
1、在 composer.json 文件中引入 elasticsearch-php:
代码语言:javascript复制{
"require":{
"elasticsearch/elasticsearch":"~6.0",
"monolog/monolog": "~1.0"
}
}
2、用 composer 安装客户端:
代码语言:javascript复制curl -s http://getcomposer.org/installer | php
php composer.phar install --no-dev
二、快速开始
1、创建一个test.php文件,内容如下
代码语言:javascript复制<?php
require 'vendor/autoload.php';
use ElasticsearchClientBuilder;
$hosts = [
'192.168.16.241:9200', // IP Port
'192.168.16.241', // Just IP
'localhost:9200', // Domain Port
'localhost', // Just Domain
'http://localhost', // SSL to localhost
'https://192.168.16.241:9200' // SSL to IP Port
];
$client = ClientBuilder::create()->setHosts($hosts)->build(); // Instantiate a new ClientBuilder // Set the hosts
$params = [
'index' => 'test_data',
'type' => 'users',
'id' => 100027,
'client' => [ 'ignore' => 404 ]
];
var_dump( $client->get($params));
2、浏览器访问test.php,结果如下(前提是你的es已经有数据)
三、基本操作
1、创建索引
代码语言:javascript复制$params = [
'index' => 'test_index'
];
// Create the index
print_r($client->indices()->create($params));
2、创建索引(指定模板)
代码语言:javascript复制$params = [
'index' => 'test_index',
'div' => [
'settings' => [
'number_of_shards' => 5,
'number_of_replicas' => 2
],
'mappings' => [
'test_type' => [
'_source' => [
'enabled' => true
],
'properties' => [
'name' => [
'type' => 'text',
'analyzer' => 'ik_max_word'
],
'age' => [
'type' => 'integer'
]
]
]
]
]
];
// Create the index with mappings and settings now
print_r($client->indices()->create($params));
3、删除索引、
代码语言:javascript复制$params = ['index' => 'test_index'];
print_r($client->indices()->delete($params));
4、更改索引的配置参数:
代码语言:javascript复制$params = [
'index' => 'test_index',
'div' => [
'settings' => [
'number_of_replicas' => 0,
'refresh_interval' => -1
]
]
];
print_r($client->indices()->putSettings($params));
5、获取一个或多个索引的当前配置参数
代码语言:javascript复制$params = [
'index' => [ 'test_index', 'test_data' ]
];
print_r($client->indices()->getSettings($params));
6、更改或增加一个索引的映射
代码语言:javascript复制$params = [
'index' => 'test_index',
'type' => 'test_type',
'div' => [
'test_type' => [
'_source' => [
'enabled' => true
],
'properties' => [
'name' => [
'type' => 'text',
'analyzer' => 'ik_max_word'
],
'age' => [
'type' => 'integer'
],
'createtime' => [
'type' => 'date' //加了一个时间
]
]
]
]
];
// Update the index mapping
print_r($client->indices()->putMapping($params));
7、返回索引和类型的映射细节
代码语言:javascript复制$response = $client->indices()->getMapping();
// Get mappings for all types in 'my_index'
$params = ['index' => 'my_index'];
$response = $client->indices()->getMapping($params);
// Get mappings for all types of 'my_type', regardless of index
$params = ['type' => 'my_type' ];
$response = $client->indices()->getMapping($params);
// Get mapping 'my_type' in 'my_index'
$params = [
'index' => 'my_index'
'type' => 'my_type'
];
$response = $client->indices()->getMapping($params);
// Get mappings for two indexes
$params = [
'index' => [ 'my_index', 'my_index2' ]
];
$response = $client->indices()->getMapping($params);
8、索引一个文档(提供id,则会更新对应id的记录。若没有提供,则会生成一条文档)
代码语言:javascript复制$params = [
'index' => 'test_data',
'type' => 'users',
'id' => '100027',
'div' => [ 'nickname' => 'update222']
];
// Document will be indexed to my_index/my_type/my_id
print_r($client->index($params));
9、获取文档
代码语言:javascript复制$params = [
'index' => 'test_data',
'type' => 'users',
'id' => '100027'
];
// Get doc at /my_index/my_type/my_id
print_r($client->get($params));
10、更新文档 (doc指定要更新的字段内容)
代码语言:javascript复制$params = [
'index' => 'test_data',
'type' => 'users',
'id' => '100027',
'div' => [
'doc' => [
'nickname' => 'abc',
'mobile' => '13800138000'
]
]
];
// Update doc at /my_index/my_type/my_id
print_r($client->update($params));
11、执行一个脚本进行更新,对某个字段的数据进行拼接或自增
代码语言:javascript复制$params = [
"index" => "test_data",
"type" => "users",
"id" => "100027",
"div" => [
"script" => "ctx._source.nickname = 'hahh'"
]
];
print_r($client->update($params));
12、删除文档
代码语言:javascript复制$params = [
'index' => 'test_data',
'type' => 'users',
'id' => '100027'
];
// Delete doc at /my_index/my_type/my_id
print_r($client->delete($params));
13、搜索内容
代码语言:javascript复制$json = '{
"query" : {
"match" : {
"id" : "100073"
}
}
}';
$params = [
'index' => 'test_data',
'type' => 'users',
'div' => $json
];
print_r($client->search($params));
$params = [
'index' => 'test_data',
'type' => 'users',
'div' => [
'query' => [
'bool' => [
'should' => [
[ 'match' => [ 'nickname' => [
'query' => 'user440032',
'boost' => 3, // 权重大
]]]
],
],
],
'sort' => ['id'=>['order'=>'desc']] //排序 分页
, 'from' => 0, 'size' => 10
]
];
print_r($client->search($params));