我正在寻找使用ElasticSearch与模型关系的项目。
现在ElasticSearch已经开始工作了,我跟随这个文档,他解释了如何从这个包开始:
elasticsearch/ElasticSearch
babenkoivan/弹性迁移
babenkoivan/弹性适配器
babenkoivan/弹性童子军司机
问题是我需要能够按关系搜索。
这是我的复合弹性迁移:
Index::create('composant', function(Mapping $mapping, Settings $settings){
$mapping->text('reference');
$mapping->keyword('designation');
$mapping->join('categorie');
$settings->analysis([
'analyzer' => [
'reference' => [
'type' => 'custom',
'tokenizer' => 'whitespace'
],
'designation' => [
'type' => 'custom',
'tokenizer' => 'whitespace'
]
]
]);
});
这里是我的分类弹性迁移:
Index::create('categorie', function(Mapping $mapping, Settings $settings){
$mapping->keyword('nom');
$settings->analysis([
'analyzer' => [
'nom' => [
'type' => 'custom',
'tokenizer' => 'whitespace'
]
]
]);
});
我的复合模型:
public function categorie()
{
return $this->belongsTo('App\Model\Categorie');
}
public function toSearchableArray()
{
return [
'reference' => $this->reference,
'designation' => $this->designation,
'categorie' => $this->categorie(),
];
}
以及我的分类模型:
public function toSearchableArray()
{
return [
'nom' => $this->nom,
];
}
因此,如果查看composant关系,可以看到joinMap返回categorie关系。我现在不知道我是否做得对,但我知道的是,elasticsearch没有任何关系,在我要找的对象。
而且我没有找到任何关于如何使用包的连接Map方法的文档。
1条答案
按热度按时间ny6fqffe1#
如果您想得到categorie的“nom”,请用composant模型代替它
$this->categorie()返回关系,而不是对象。