Download the PHP package jfxy/elasticsearch without Composer
On this page you can find all versions of the php package jfxy/elasticsearch. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package elasticsearch
elasticsearch
安装
注意
elasticsearch | php | package |
---|---|---|
>= 7.0 | >= 7.1 | 7.* |
>= 6.0 | >= 7.1 | 6.* |
使用
laravel
- 对于Laravel版本低于5.5的应用,需要在config/app.php文件中设置服务提供者和别名
-
Laravel版本为5.5或以上,Laravel会进行「包自动发现」
-
发布配置文件
- 调用方式
1、在laravel中可以使用门面Es来进行调用
2、可以通过传入配置文件进行调用
3、可以使用子类继承\Jfxy\Elasticsearch\Builder,通过重写clientBuilder方法和设置index来简化调用,同时可以在子类中对复杂的操作进行封装
方法
索引操作
setIndex
- 设置当前操作或查询的索引
文档操作
index 索引文档
- 不指定id或指定的id不存在时为创建操作
- 指定id且id存在时为更新操作
create 创建文档
- id必须指定,如果id已存在则创建失败
update 更新文档
delete 删除文档
- 删除的文档不存在时会抛出 Elasticsearch\Common\Exceptions\Missing404Exception 异常
查询操作
select
where
- 比较运算符支持 =,>,>=,<,<=,!=,<>
- where、orWhere、whereNot、orWhereNot均支持闭包调用,而orWhere、whereNot、orWhereNot则是对闭包内的整体条件进行 or 和 not 的操作,闭包用法类似mysql中对闭包内的条件前后加上()
- 在封装业务代码存在or关系时,应使用闭包包裹内部条件
filter
- 用法同where一致,不过条件会写在filter下
in
between
- 默认为闭区间,比较运算符支持 >,>=,<,<=
exists
- 字段不存在或为null
prefix 前缀匹配
wildcard 通配符匹配
regexp 正则匹配
fuzzy 模糊查询
match
- whereMatch方法,$type=match、match_phrase、match_phrase_prefix
- whereMultiMatch方法,$type=best_fields、most_fields、cross_fields、phrase、phrase_prefix
minimumShouldMatch 最小匹配度
whereNested nested类型字段查询
- 仅支持传入闭包和数组条件
postWhere 后置过滤器
- postWhere方法添加的条件会作用于post_filter查询,条件作用于聚合之后
- postWhere方法参数同where方法相同,复杂的检索可以传入数组或闭包
when
- $value为true时会执行$callback,否则当$default存在时会执行$default
collapse 折叠
- 使用collapse方法并不会使返回的总数发生变化,计算折叠后的总数需要配合cardinality聚合使用
- collapse方法和paginator方法一起使用时,paginator方法内部会对折叠的字段做cardinality聚合,不需要考虑collapse的总数问题
minScore
from
size
orderBy 排序
highlight 高亮
- 高亮配置及高亮字段
-
建议先在Es子类中设置highlightConfig通用属性
- 使用highlightConfig方法会覆盖highlightConfig通用属性中的同键名配置
- highlight方法指定高亮字段并且设置指定字段的高亮属性
aggs 聚合
- $alias参数是该聚合的别名
- $type参数是聚合的类型,terms、histogram、date_histogram、date_range、range、cardinality、avg、sum、min、max、extended_stats、top_hits、filter...
- $params参数是不同聚合类型下的条件键值对数组
-
...$subGroups参数是嵌套聚合,通过传递闭包参数调用,可同时传递多个闭包
-
groupBy方法是aggs的terms类型聚合的封装
`` -
dateGroupBy方法是aggs的date_histogram类型聚合的封装
`` -
cardinality方法是aggs的cardinality类型聚合的封装 ``
-
avg方法是aggs的avg类型聚合的封装 ``
-
sum方法是aggs的sum类型聚合的封装 ``
-
min方法是aggs的min类型聚合的封装 ``
-
max方法是aggs的max类型聚合的封装 ``
-
stats方法是aggs的stats类型聚合的封装 ``
-
extendedStats方法是aggs的extended_stats类型聚合的封装 ``
-
topHits方法是top_hits类型聚合的封装
- aggsFilter方法是filter类型聚合的封装,可在聚合内部进行条件过滤,$wheres参数仅支持数组和闭包,可参考where方法
raw
- 原生dsl语句查询,不支持添加其他条件
dsl
- 返回待查询的dsl语句,$type = 'json',返回json字符串
response
- 原样输出查询结果
get
- 返回经过一定处理的结果
paginator 分页
- paginator方法和collapse方法一起使用时,paginator方法内部会对折叠的字段做cardinality聚合,不需要考虑collapse的总数问题
first
- 返回第一条记录