【问题标题】:Convert time in milliseconds to Solr date format using ScriptUpdateProcessor使用 ScriptUpdateProcessor 将时间以毫秒为单位转换为 Solr 日期格式
【发布时间】:2016-09-17 14:16:30
【问题描述】:

我需要通过 Solr ScriptUpdateProcessor 将 long 数据类型的字段 say,timestamp_ms(ex: 1473794840429) 转换为 solr 日期格式 yyyy-mm-ddThh:mm:ssZ。

下面是我的 solrconfig.xml

<processor name="script" class="solr.StatelessScriptUpdateProcessorFactory">
    <str name="script">date-update.js</str>
</processor> 

我的 date-update.js 是:

function processAdd(cmd) {
doc = cmd.solrDoc;  // org.apache.solr.common.SolrInputDocument
var datecheck = doc.getFieldValue("timestamp_ms");
var date1 = new Date(datecheck);  
var date2= date1.toUTCString();
doc.setField("tweet_date",date2);
}

-date2 存储为字符串数据类型。

当我重新加载核心并发布文档时,我收到以下错误:

org.apache.solr.common.SolrException: RunUpdateProcessor 收到了一个 AddUpdateCommand,其中包含一个似乎仍包含原子文档更新操作的文档,很可能是因为 DistributedUpdateProcessorFactory 已被此 updateRequestProcessorChain 明确禁用

我该如何解决这个问题?

【问题讨论】:

  • 能否在你的 solrconfig 文件中添加你对 updateRequestProcessorChain 所做的配置?
  • 你在 SolrCloud 模式下使用 Solr 吗?

标签: javascript datetime solr solr6


【解决方案1】:

Atomic updates 需要启用 Solr Transaction Log,因此首先要确保在 solrconfig.xml 中设置了 updateLog 配置:

<updateLog>
  <str name="dir">${solr.ulog.dir:}</str>
</updateLog>

【讨论】:

    【解决方案2】:

    确保您在 js 文件中有一个名为 finish 的函数,例如:

    function finish(){
    
    }
    

    并确保在处理器之后的 solrconfig.xml 中添加以下内容,否则根本不会发生更新:

    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
    

    所以你的 solrconfig.xml 看起来像:

     <updateRequestProcessorChain name="mychain" default="true">
          <processor name="script" class="solr.StatelessScriptUpdateProcessorFactory">
            <str name="script">last_reaction_date.js</str>
          </processor> 
          <processor class="solr.LogUpdateProcessorFactory" />
          <processor class="solr.RunUpdateProcessorFactory" />
     </updateRequestProcessorChain>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2022-11-27
      • 1970-01-01
      • 2017-05-28
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多