美文网首页
ElasticSearch+PHP基本使用

ElasticSearch+PHP基本使用

作者: 简跃 | 来源:发表于2019-05-24 16:18 被阅读0次

一个可以充当数据库,并且拥有可以实现全文搜索的搜索引擎的强大工具。

一些概念

  • index:一个索引,可以看做是关系型数据库的一个库;
  • type:一种类型,可以看做是关系型数据库的一个表;
  • id:可以看做是关系型数据库的主键ID字段;

安装

安装前置条件:

  1. 已安装完整的WAMP开发环境;
  2. 已安装可用的ElasticSearch服务端,推荐使用Docker进行安装;
  • composer.json文件中引入elasticsearch.php:
{
    "require" : {
        "elasticsearch/elasticsearch": "~6.0"
    }
} 
  • composer进行安装(需要确保此项目被composer监管):
composer update elasticsearch/elasticsearch
  • 在项目中新建一个路由,引入文件,并且实例化一个客户端
use Elasticsearch\ClientBuilder;
// 此步骤在class的function里执行
$client = ClientBuilder::create()->build();

简单使用

索引一个文档(创建一条数据)

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => ['testField' => 'abc'] // 此条数据的内容,数组可以任意定义。
];

$response = $client->index($params);
print_r($response);

其响应结果为:

Array
(
    [_index] => my_index // 创建的index名
    [_type] => my_type   // 创建的type名
    [_id] => my_id       // 创建的id名
    [_version] => 1
    [created] => 1
)

获取一个文档(查询一条记录)

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id'
];

$response = $client->get($params);
print_r($response);

其响应结果为:

Array
(
    [_index] => my_index
    [_type] => my_type
    [_id] => my_id
    [_version] => 1
    [found] => 1     //匹配的条数
    [_source] => Array
        (
            [testField] => abc // 内容为我们刚刚设置的内容
        )

)

搜索一个文档(全文搜索)

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [ // 查询时必须制定的`query`参数
            'match' => [
                'testField' => 'abc'
            ]
        ]
    ]
];

$response = $client->search($params);
print_r($response);

其响应结果为:

Array
(
    [took] => 1
    [timed_out] => // 是否超时
    [_shards] => Array
        (
            [total] => 5
            [successful] => 5
            [failed] => 0
        )

    [hits] => Array // 命中的结果
        (
            [total] => 1 // 总命中数
            [max_score] => 0.30685282
            [hits] => Array // 命中的数据
                (
                    [0] => Array
                        (
                            [_index] => my_index
                            [_type] => my_type
                            [_id] => my_id
                            [_score] => 0.30685282 // 命中的得分
                            [_source] => Array     // 实际的内容
                                (
                                    [testField] => abc
                                )
                        )
                )
        )
)

删除一个文档(仅删除一条记录)

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id'
];

$response = $client->delete($params);
print_r($response);

其响应结果为:

Array
(
    [found] => 1
    [_index] => my_index
    [_type] => my_type
    [_id] => my_id
    [_version] => 2
)

删除索引(删除整个数据库)

由于 Elasticsearch 的动态特性, 我们添加的第一个文档自动构建了一个带有一些默认设置的索引。因为稍后我们要自己指定一些设置,所以现在可以先把这个索引删除:

$deleteParams = [
    'index' => 'my_index'
];
$response = $client->indices()->delete($deleteParams);
print_r($response);

其响应结果为:

Array
(
    [acknowledged] => 1
)

创建索引

现在我们重新开始来添加一个自定义设置的新索引:

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [               // 自定义设置配置
            'number_of_shards' => 2,  // 数据分片数
            'number_of_replicas' => 0 // 数据备份数
        ]
    ]
];

$response = $client->indices()->create($params);
print_r($response);

其响应结果为:

Array
(
    [acknowledged] => 1
)

相关文章

  • ElasticSearch+PHP基本使用

    一个可以充当数据库,并且拥有可以实现全文搜索的搜索引擎的强大工具。 一些概念 index:一个索引,可以看做是关系...

  • Flutter--Text/Container/Image

    Text基本使用 Container基本使用 Image基本使用

  • 基本使用

    1、 打开需要上传的文件夹执行: git init 格式化窗口 2、执行 git add . 上传文件 3、执行 ...

  • 基本使用

    href="javascript:;" 其中javascript: 是一个伪协议。它可以让我们通过一个链接来调用...

  • 基本使用

    数据库: 什么是数据库?简单来说就是存数据的。 都有什么是数据库? oracle(强大,跟金融政府打交道的,安全,...

  • 基本使用

    本文参考:https://morvanzhou.github.io/tutorials/machine-learn...

  • 6-xpath和css select基本使用

    Xpath基本使用 css select基本使用

  • MySQL语法入门(一)

    MySQL语法入门(一) 基本运算符使用 基本数学函数使用 基本字符串函数使用 基本日期时间函数使用

  • python time与datetime模块基本使用

    time模块基本使用 datetime模块基本使用

  • SQL语句基本使用

    SQL语句基本使用——增删改查 SQL语句基本使用——WHERE子句 SQL语句基本使用——AND和OR的使用 S...

网友评论

      本文标题:ElasticSearch+PHP基本使用

      本文链接:https://www.haomeiwen.com/subject/ktcnzqtx.html