hovjacky / nosql
Elasticsearch的PHP客户端(MongoDB和Cassandra即将完成) - 简单统一的查询
v3.0.4
2024-07-01 07:08 UTC
Requires
- php: >=8.2 <8.4
- ext-mbstring: *
- elasticsearch/elasticsearch: ^7.15.0
- tracy/tracy: ^2.10
Requires (Dev)
- phpstan/phpstan: ^1.10.15
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-02 08:51:32 UTC
README
此包为一些NoSQL数据库创建统一的API(当时只有Elasticsearch、MongoDB和Cassandra需要完成)。
安装
推荐使用Composer安装。
composer require hovjacky/nosql
需要PHP版本7.0或更高。
用法
连接参数(主机、端口、索引)必须作为数组传递给ElasticsearchClient
构造函数。
支持以下方法
- insert - 数组
$data
- bulkInsert - 数组
$data
- get - int
$id
- update - int
$id
, 数组$data
- delete - int
$id
- deleteAll
- findBy - 数组
$params
- 详细信息见下文。
所有方法都以table
作为第一个参数(在Elasticsearch中是类型名称)。
####方法findBy
- fields - 用户希望检索的字段数组(《SELECT id, name FROM)
- limit - 最大结果数(《LIMIT 10)
- offset - 与limit一起使用(《LIMIT 10, 10)
- count - 仅获取结果数
- orderBy - 要排序的字段数组,例如
['id', 'name']
,降序以小写desc标记['id desc', 'name']
(《ORDER BY id DESC, name) - groupBy - 要分组的字段数组,例如
['id', 'name']
(《GROUP BY id, name)- Elasticsearch仅支持
- groupByScript - 如果
groupBy
包含单词script
,则可以包含Elasticsearch脚本(《https://elastic.ac.cn/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html) - groupInternalOrderBy - 每个桶内部要分组的字段数组(没有SQL等效项)
- groupByScript - 如果
- Elasticsearch仅支持
- aggregation - 关联数组,键是聚合函数(如max、min、avg等),值是要应用聚合的字段名称,例如
['min' => ['id', 'age'], 'avg' => ['age']]
(《SELECT MIN(id), MIN(age), AVG(age) FROM) - where - 关联数组,键是带有占位符(?)的条件,值是值。条件接受=、!=、>、<、>=、<=、LIKE、IS NULL、IS NOT NULL、CROSS FIELDS运算符。
- LIKE - 值应包含%(与SQL相同)
- = - 值可以是数组,例如
['id = ?' => [1, 3, 7]]
(《id IN (1, 3, 7)) - IS NULL, IS NOT NULL - Elasticsearch仅支持
- CROSS FIELDS - 在多个字段中搜索字符串,例如在字段
firstname
和surname
中搜索John Smith
。语法是"firstname,surname CROSS FIELDS ?" => "John Smith"