kiwfy / simple-elasticsearch-php
7.0.0
2023-11-27 10:35 UTC
Requires
- php: ^8.3
- guzzlehttp/guzzle: ^7.8
Requires (Dev)
- mockery/mockery: ^1.6
- phpmd/phpmd: ^2.14
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
PHP 库,以简单的方式连接和使用 Elasticsearch。
安装
版本 7.0.0 需要 PHP 8.3
版本 6.0.0 需要 PHP 8.2
版本 5.0.0 需要 PHP 8.1
版本 4.0.0 需要 PHP 7.4
版本 3.0.0 需要 PHP 7.3
版本 2.0.0 需要 PHP 7.2
版本 1.0.0 需要 PHP 7.1
建议通过 Composer 进行安装。
composer require not-empty/simple-elasticsearch-php-lib
使用
设置连接
use SimpleElasticsearch\SimpleElasticsearch; $host = 'https://:9200/'; $elastic = new SimpleElasticsearch($host); $elastic->setConnectionOptions([ 'connect_timeout' => 5, 'timeout' => 5, ]);
检查连接是否可用
... $isConnected = $elastic->isConnected(); var_dump($isConnected);
添加索引
... $indexName = 'test'; $index = $elastic->putIndex( $indexName ); var_dump($index);
添加映射
... $indexName = 'test'; $mapping = [ 'properties' => [ 'name' => [ 'type' => 'keyword', ], 'email' => [ 'type' => 'keyword', ], 'gender' => [ 'type' => 'byte', ] ] ]; $newMapping = $elastic->putMapping( $indexName, $mapping ); var_dump($newMapping);
添加模板
... $documentName = 'document'; $template = [ 'index_patterns' => [ 'document*' ], 'mappings' => [ '_source' => [ 'enabled' => true, ], 'properties' => [ 'name' => [ 'type' => 'keyword', ], 'created' => [ 'type'=> 'date', 'format' => 'yyyy-MM-dd HH:mm:ss', ], ] ] ]; $newTemplate = $elastic->putTemplate( $documentName, $template ); var_dump($newTemplate);
获取索引
... $indexName = 'test'; $getIndex = $elastic->getIndex( $indexName ); var_dump($getIndex);
获取映射
... $indexName = 'test'; $getMapping = $elastic->getMapping( $indexName ); var_dump($getMapping);
获取模板
... $documentName = 'document'; $getTemplate = $elastic->getTemplate( $documentName ); var_dump($getTemplate);
使用模板发布文档
... $documentName = 'document'; $dataTemplate = [ 'name' => 'document1', 'created' => date('Y-m-d H:i:s'), ]; $postDocumentTemplate = $elastic->postDocument( $documentName, $dataTemplate ); var_dump($postDocumentTemplate);
通过 ID 发布文档
... $documentName = 'document'; $indexName = 'test'; $data = [ 'name' => 'user', 'email' => 'test@test.com', 'gender' => 0, ]; $id = '01HDRQRB0VPDDB9HWHX3MGY6XG'; $postDocument = $elastic->postDocument( $indexName, $data, $id ); var_dump($postDocument);
通过 ID 获取文档
... $indexName = 'test'; $id = '01HDRQRB0VPDDB9HWHX3MGY6XG'; $getDocument = $elastic->getDocument( $indexName, $id ); var_dump($getDocument);
通过 ID 删除文档
... $indexName = 'test'; $id = '01HDRQRB0VPDDB9HWHX3MGY6XG'; $deleteDocument = $elastic->deleteDocument( $indexName, $id ); var_dump($deleteDocument);
搜索文档
... $indexName = 'test'; $dslQuery = [ 'term' => [ 'email' => [ 'value' => 'test@test.com', 'boost' => 1, ], ], ]; $searchDocuments = $elastic->searchDocuments( $indexName, $dslQuery ); var_dump($searchDocuments);
列出文档
... $indexName = 'test'; $listDocuments = $elastic->listDocuments( $indexName ); var_dump($listDocuments);
分页列出文档
... $indexName = 'test'; $page = 2; $listDocumentsPaginated = $elastic->listDocuments( $indexName, $page ); var_dump($listDocumentsPaginated);
执行 'SQL' 查询
... $query = "SELECT * FROM test WHERE email LIKE '%test@test.com' ORDER BY email DESC"; $sqlResponse = $elastic->sql( $query ); var_dump($sqlResponse);
使用游标分页执行 'SQL' 查询
... // var $sql has data returned from previous query with the cursor $sqlCursorResponse = $elastic->sqlCursor( $sql['cursor'] ); var_dump($sqlCursorResponse);
将 'SQL' 查询转换为 'DSL' 查询
... $query = "SELECT * FROM test WHERE email LIKE '%test@test.com' ORDER BY email DESC"; $translate = $elastic->translate( $query ); var_dump($translate);
删除模板
... $documentName = 'document'; $deleteTemplate = $elastic->deleteTemplate( $documentName ); var_dump($deleteTemplate);
删除索引
... $indexName = 'test'; $deleteIndex = $elastic->deleteIndex( $indexName ); var_dump($deleteIndex);
聚合文档
... $indexName = 'test'; $dslAgregate = [ 'genders' => [ 'terms' => [ 'field' => 'gender', ] ] ]; $dslQueryAggregate = [ 'wildcard' => [ 'email' => [ 'wildcard' => '*1-test@test.com', 'boost' => 1, ], ], ]; $aggregateDocuments = $elastic->aggregateDocuments( $indexName, $dslAgregate, $dslQueryAggregate ); var_dump($aggregateDocuments);
如果您想要一个运行或测试的环境,您可以构建并安装依赖项,如下所示
docker build --build-arg PHP_VERSION=8.3-rc-cli -t not-empty/simple-elasticsearch-php-lib:php83 -f contrib/Dockerfile .
访问容器
docker run -v ${PWD}/:/var/www/html -it not-empty/simple-elasticsearch-php-lib:php83 bash
验证是否已安装所有依赖项
composer install --no-dev --prefer-dist
并运行
php sample/elastic-sample.php
开发
想要贡献?太好了!
项目使用简单代码。修改您的文件时请谨慎更新!任何新代码都只能在接受所有验证后才能被接受。
为确保整个项目正常
首先,您需要构建一个正确环境以安装所有依赖项
docker build --build-arg PHP_VERSION=8.3-rc-cli -t not-empty/simple-elasticsearch-php-lib:php83 -f contrib/Dockerfile .
访问容器
docker run -v ${PWD}/:/var/www/html -it not-empty/simple-elasticsearch-php-lib:php83 bash
安装所有依赖项
composer install --dev --prefer-dist
运行所有验证
composer check
非空基础 - 自由代码,满载思维