Преобразование времени в миллисекундах в формат даты Solr с использованием ScriptUpdateProcessor

Мне нужно преобразовать поле скажем,timestamp_ms(например: 1473794840429), который находится в длинном типе данных, чтобы найти формат даты гггг-мм-ддтчч: мм: сс Z через Solr ScriptUpdateProcessor.

Ниже мой 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, содержащий документ, который, по-видимому, все еще содержит операции обновления документа Atomic, скорее всего потому, что DistributedUpdateProcessorFactory был явно отключен из этого updateRequestProcessorChain

Как мне это решить?

2 ответа

Для атомарных обновлений требуется, чтобы был включен Solr Transaction Log, поэтому прежде всего убедитесь, что у вас установлен конфигурационный файл updateLog в solrconfig.xml:

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

Убедитесь, что в файле 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>
Другие вопросы по тегам