hovjacky/nosql

Elasticsearch的PHP客户端(MongoDB和Cassandra即将完成) - 简单统一的查询

v3.0.4 2024-07-01 07:08 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等效项)
  • 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 - 在多个字段中搜索字符串,例如在字段firstnamesurname中搜索John Smith。语法是"firstname,surname CROSS FIELDS ?" => "John Smith"