elasticsearch “如何序列化对象”;日期时间“;物业变成一个;日期“;elasticsearch类型,而不是";“文本”;
我正在使用Symfony 4创建一个网站 访问者将需要通过“dynamic_date”订购的数千篇文章进行搜索。我使用Elasticsearch 6.7、FOSElasticaBundle和JMS序列化程序来索引“Article”对象 序列化似乎在某种程度上误导了ElasticSearch的最终索引类型,这使我无法对搜索结果进行排序 我如何在配置文件或注释中指出它 我尝试使用@Type注释,以便将其强制为正确的类型 FOSElasticaBundle配置文件:elasticsearch “如何序列化对象”;日期时间“;物业变成一个;日期“;elasticsearch类型,而不是";“文本”;,elasticsearch,serialization,foselasticabundle,jms-serializer,elasticsearch,Serialization,Foselasticabundle,Jms Serializer,我正在使用Symfony 4创建一个网站 访问者将需要通过“dynamic_date”订购的数千篇文章进行搜索。我使用Elasticsearch 6.7、FOSElasticaBundle和JMS序列化程序来索引“Article”对象 序列化似乎在某种程度上误导了ElasticSearch的最终索引类型,这使我无法对搜索结果进行排序 我如何在配置文件或注释中指出它 我尝试使用@Type注释,以便将其强制为正确的类型 FOSElasticaBundle配置文件: fos_elastica:
fos_elastica:
serializer:
serializer: jms_serializer
...
articles:
types:
article:
serializer:
groups: [elastica]
第条实体:
use JMS\Serializer\Annotation as Serializer;
...
/**
* @Serializer\Type("DateTimeImmutable")
* @Serializer\Groups({"article_show", "list", "elastica"})
* @var \DateTimeImmutable
* @Gedmo\Timestampable(on="change", field="state", value="published" )
* @ORM\Column( name="dynamic_date", type="datetimetz_immutable", nullable=true)
*/
protected $dynamic_date ;
ArticlesSearchRepository:
$query = new \Elastica\Query( $boolQuery ) ;
$query -> addSort
(
array
(
'dynamic_date' => array( 'order' => 'desc' )
)
);
但是,通过检查,我可以看到它总是以“text”类型而不是“date”类型作为索引,这会引发以下错误:
默认情况下,文本字段上禁用Fielddata。在>上设置fielddata=true
[dynamic_date]通过取消转换>反向索引将fielddata加载到内存中。请注意,这可能会占用大量内存
然而,当我手动设置它时(不使用序列化程序),它会按预期工作,如下所示:
articles:
types:
article:
properties:
dynamic_date:
type: "date"
不过,我希望保留使用JMS序列化程序的好处