将日期类型(Solr.TrieDateField)复制到字符串类型(Solr.TextField)时,Solr CopyField的行为很奇怪

将日期类型(Solr.TrieDateField)复制到字符串类型(Solr.TextField)时,Solr CopyField的行为很奇怪,solr,Solr,我正在使用以下方法将日期字段复制到字符串字段(schema.xml): 源和目标类型定义为: <field name="mydate" type="solr.TrieDateField" indexed="true" stored="true"/> <field name="mystr" type="solr.TextField" indexed="true" stored="true" multiValued="true"/> mydate的值为“2009-0

我正在使用以下方法将日期字段复制到字符串字段(schema.xml):

源和目标类型定义为:

<field name="mydate" type="solr.TrieDateField" indexed="true" stored="true"/>
<field name="mystr" type="solr.TextField" indexed="true" stored="true"  multiValued="true"/>

mydate的值为“2009-06-03T00:00:00Z”

我希望在mystr中有相同的值,即“2009-06-03T00:00:00Z”,但在mystr中得到的日期格式不同。我在mystr中得到的值是“Wed Jun 03 00:00:00 UTC 2009”

我在solrcloud模式下运行solr,有2个节点solr集群。 此外,此行为仅在solrcloud模式下发生。 如果我将solr作为单个节点运行,这将非常有效

我正在寻找帮助,以获得源日期,因为它是(没有格式变化)到mystr字段


我知道我可以通过在DIH中定义一个单独的字符串字段和设置值来实现这一点,但我很想知道为什么上面的副本不能按预期工作。

这里的核心问题是,在copyField发生时,日期字段已经被解析。因此,您将内部日期表示形式展开回副本的文本中

禁用“无模式模式”的经典模式不应出现这种情况。也许这就是为什么它不会在独立版本中发生。对于SolrCloud,在将对象发送到不同节点之前,很可能已经对现有字段进行了解析。然后,各个节点实际执行copyField指令。这是我的假设,我没有仔细观察来源

解决方案是使用(例如CloneFieldUpdateProcessorFactory),因为它肯定会完全复制您发送的内容。如果需要,可以与DIH结合使用。只需仔细阅读与Solr版本匹配的手动版本,因为有多种方法可以调用URP,具体取决于您正在运行的内容


你可能会发现我做的Solr难题很有趣(好吧,你已经知道部分答案)。

这里的核心问题是日期字段在copyField发生时已经被解析。因此,您将内部日期表示形式展开回副本的文本中

禁用“无模式模式”的经典模式不应出现这种情况。也许这就是为什么它不会在独立版本中发生。对于SolrCloud,在将对象发送到不同节点之前,很可能已经对现有字段进行了解析。然后,各个节点实际执行copyField指令。这是我的假设,我没有仔细观察来源

解决方案是使用(例如CloneFieldUpdateProcessorFactory),因为它肯定会完全复制您发送的内容。如果需要,可以与DIH结合使用。只需仔细阅读与Solr版本匹配的手动版本,因为有多种方法可以调用URP,具体取决于您正在运行的内容

你可能也会发现我做的Solr拼图很有趣(嗯,你已经知道部分答案了)