有多个软件包可以将elasticsearch与laravel集成在一起。 其中大多数提供了优雅的查询语法:"雄辩的风格"。 由于弹性的独特查询语法,可能有人在寻找laravel使用的1:1弹性查询语法。这提高了可测试性 - 例如ElasticSearch Head-并且避免了翻译错误到类似口才的语法(无论如何将其转换回原始的弹性查询语法)。此外,虽然Eloquent模型在为关系数据库提供解决方案方面非常强大,但弹性不是关系数据库,而是分布式搜索引擎。 那么,如何使用弹性自带的基于json的查询语言开始使用laravel弹性,并在laravel中使用弹性查询1:1并变为100%弹性兼容?
答案 0 :(得分:0)
<?php
namespace App\Es\Search;
class Boot
{
public function getAanbod($havenhouder)
{
{
$json = '{"query":{"bool":{"must":[{"term":{"havenurl.raw":"'.
$havenhouder .'"}}],"must_not":[],"should":
[]}},"from":0,"size":10,"sort":
[],"aggs":{}}';
$params = [
'index' => 'havens',
'type' => 'hisdata',
'body' => $json
];
$results = \Elasticsearch::search($params);
foreach ($results['hits']['hits'] as $result) {
$aanbod[] = $result['_source'];
}
return $aanbod;
}
}
}
应用强> 提供商&gt; Cviebrock \ LaravelElasticsearch \的ServiceProvider ::类, 别名&gt; 'Elasticsearch'=&gt; Cviebrock \ LaravelElasticsearch \门面类::,
<强>作曲家:强> 要求&gt; “cviebrock / laravel-elasticsearch”:“^ 2”,
在此示例中,正在创建一个可以使用它的命名空间调用的类。我更喜欢通过它自己的合同将它提供给服务容器。 $ json属性定义了我们用于搜索的查询,并且与我们作为查询提供弹性的json相同。因此,如果我们使用Elastic测试查询,例如。通过ElasticSearch Head,它是完全相同的查询输入。聚合等?没问题。 更进一步,不要忘记在安装后使用composer dump-autoload,并在.env中配置弹性连接。