gpt4 book ai didi

php - Yii2(或独立)中用于ElasticSearch查询DSL的构建器

转载 作者:行者123 更新时间:2023-12-02 23:35:13 26 4
gpt4 key购买 nike

据我所知,在Yii2中对ElasticSearch进行查询的唯一方法是运行ElasticModel::find()->query($query),其中$query是一个复杂的数组,其中包含用ElasticSearch查询DSL编写的实际查询。

该查询是巨大的,并且很快变得难以管理。对于SQL,Yii2提供了功能强大的查询生成器类,该类支持大量有用的方法,例如andWhere()。对于ElasticSearch,一切都变成一个巨大的查询表达式,就像手动构建SQL表达式字符串一样。

是否有Yii2的ElasticSearch查询DSL的高级包装?如果没有,是否存在具有类似功能的独立库?

最佳答案

如果您打算针对Elastic 1.6版本进行构建,那么我已经为我的公司创建了一个查询构建器并发布了it here

您将使用它作为独立的查询构建器,最后,您需要获取最终的查询数组并将其传递给查询执行程序。

要安装它,您只需使用 Composer composer require itvisionsy/php-es-orm或下载压缩版本here即可。

上面的链接包含一些示例,这是一个副本:

//build the query using different methods
$query = \ItvisionSy\EsMapper\QueryBuilder::make()
->where('key1','some value') //term clause
->where('key2',$intValue,'>') //range clause
->where('key3','value','!=') //must_not term clause
->where('key4', ['value1','value2']) //terms clause
->where('email', '@hotmail.com', '*=') //wildcard search for all @hotmail.com emails
->sort('key1','asc') //first sort option
->sort('key2',['order'=>'asc','mode'=>'avg']) //second sort option
->from(20)->size(20) //results from 20 to 39
->toArray();

//modify the query as you need
$query['aggs']=['company'=>['terms'=>['field'=>'company']]];

//then execute it against a type query
$result = TypeQuery::query($query);
//i am not sure about Yii way to execute, according to the question, it should be:
$result = ElasticModel::find()->query($query);

该软件包还包括一个简单的ElasticSearch ORM类,可能对您有用。看看它 here

希望这对您有帮助...

关于php - Yii2(或独立)中用于ElasticSearch查询DSL的构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com