我的弹性类型的配置如下所示:
acme_article:
mappings:
title: {type:string, index_analyzer:acme_analyzer}
content: {type:string, index_analyzer:acme_analyzer}
slug: ~
media: {type:string, index_analyzer:acme_analyzer}
categories:
type: "object"
properties:
name: ~
id: ~
instance:
type: "object"
properties:
name: ~
created_by: ~
created_at: ~
我有Repository类,它扩展了FOS \ ElasticaBundle \ Repository,除了排序外,一切运行良好。
$query = new \Elastica\Query();
$query->setSort(array('created_at' => array('order' => 'desc')));
return $this->find($query);
得到一些相关的结果,完全没有秩序。然后,我尝试在索引中添加模型ID并尝试按id排序,但也没有成功。
答案 0 :(得分:2)
解决方法是在created_at字段上设置{type:date}。在那种情况下,ES按时间戳排序,一切正常。
按ID排序不起作用,因为在某种程度上,categories.id覆盖了主要ID,然后我得到了按category.id排序的结果,而不是实体ID。