Как вставить многозначное поле в solr, используя лилию с морфлинной строкой

Я пытаюсь вставить разделенную запятыми строку в качестве многозначного поля в мою конфигурацию морфлина из структуры на основе строк в HBase.

Может ли кто-нибудь предложить какой-либо лучший способ или опыт, я новичок в этом.

Есть ли способ, которым я могу это сделать.

HBase-Indexer Mapper:

<?xml version="1.0"?>
<indexer table="Document_Test"
    mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper"
    unique-key-field="documentId" mapping="row">

    <param name="morphlineFile" value="/path/to/morphline.conf" />

</indexer>

Morphline Conf:

{
   extractHBaseCells {
             mappings : [
                           {
                              inputColumn : "CF:DocumentId"
                              outputField : documentId
                              type : long
                              source : value
                           }
                           {
                              inputColumn : "CF:Persons"
                              outputField : persons
                              type : string
                              source : value
                           }
                        ]
                    }

      // Some command here which can be used, I tried with **java**, But didn't worked and make it a single string

}

Это просто делает одну строку вроде этого:

 {
    "persons": [
      "[Panos Kammenos, King Salman, Nabil Sadek, Ehab Azmy, Hesham Abdelhamid]"
    ],
    "documentId": 38900223,
    "_version_": 1535233203724353500
  }

ОБНОВЛЕНО

Попробовал этот, и он работал на строках на основе строк или на высокой структуре.

     {
    extractHBaseCells {
        mappings : [
            {
                inputColumn : "CF:DocumentId"
                outputField : documentId
                type : long
                source : value
            }
            {
                inputColumn : "CF:Persons"
                outputField : persons
                type : string
                source : value
            }
        ]
    }
}
{
    split{
        inputField : persons
        outputField : persons_multi
        separator : ","
        isRegex : false
    }
}

1 ответ

Решение

Вы можете использовать команду split следующим образом:

{
    extractHBaseCells {
        mappings : [
            {
                inputColumn : "CF:DocumentId"
                outputField : documentId
                type : long
                source : value
            }
            {
                inputColumn : "CF:Persons"
                outputField : persons
                type : string
                source : value
            }
        ]
    }
}
{
    split{
        inputField : persons
        outputField : persons_multi
        separator : ","
        isRegex : false
    }
}

Дайте мне знать, если у вас возникнут какие-либо проблемы.

Другие вопросы по тегам