elasticsearch “如何序列化对象”;日期时间“;物业变成一个;日期“;elasticsearch类型,而不是";“文本”;,elasticsearch,serialization,foselasticabundle,jms-serializer,elasticsearch,Serialization,Foselasticabundle,Jms Serializer" /> elasticsearch “如何序列化对象”;日期时间“;物业变成一个;日期“;elasticsearch类型,而不是";“文本”;,elasticsearch,serialization,foselasticabundle,jms-serializer,elasticsearch,Serialization,Foselasticabundle,Jms Serializer" />

elasticsearch “如何序列化对象”;日期时间“;物业变成一个;日期“;elasticsearch类型,而不是";“文本”;

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:

我正在使用Symfony 4创建一个网站

访问者将需要通过“dynamic_date”订购的数千篇文章进行搜索。我使用Elasticsearch 6.7、FOSElasticaBundle和JMS序列化程序来索引“Article”对象

序列化似乎在某种程度上误导了ElasticSearch的最终索引类型,这使我无法对搜索结果进行排序

我如何在配置文件或注释中指出它

我尝试使用@Type注释,以便将其强制为正确的类型

FOSElasticaBundle配置文件:

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序列化程序的好处