Как изменить шаблон индекса, используемый автором индекса nutch для elasticsearch?

По умолчанию модуль записи индекса nutch для elasticsearch создает индекс в elasticsearch с именем, указанным в nutch-site.xml (или nutch-default.xml) в элементе свойства:

   <property> 
     <name>elastic.index</name>
     <value>nutch</value> 
     <description>Default index to send documents to.</description>
   </property>

Раздел сопоставлений в elasticsearch для такого автоматически сгенерированного индекса всегда имеет следующую структуру

   {
       "nutch": {
           "mappings": {
               "doc": {
                   "properties": {
                       "anchor": {
                           "type": "string"
                       },
                       "boost": {
                           "type": "string"
                       },
                       "cache": {
                           "type": "string"
                       },
                       "content": {
                           "type": "string"
                       },
                       "contentLength": {
                           "type": "string"
                       },
                       "date": {
                           "type": "date",
                           "format": "dateOptionalTime"
                       },
                       "digest": {
                           "type": "string"
                       },
                       "host": {
                           "type": "string"
                       },
                       "id": {
                           "type": "string"
                       },
                       "lang": {
                           "type": "string"
                       },
                       "lastModified": {
                           "type": "date",
                           "format": "dateOptionalTime"
                       },
                       "segment": {
                           "type": "string"
                       },
                       "title": {
                           "type": "string"
                       },
                       "tstamp": {
                           "type": "date",
                           "format": "dateOptionalTime"
                       },
                       "type": {
                           "type": "string"
                       },
                       "url": {
                           "type": "string"
                       }
                   }
               }
           }
       }
   }
  1. Где шаблон для этого?
  2. Можно ли его изменить?
  3. Если да, какие поля являются обязательными, а какие необязательными?
  4. Где я могу найти больше информации об этом?

Любая помощь приветствуется! Спасибо, Вольфрам


person wbartussek    schedule 03.12.2015    source источник


Ответы (1)


Добро пожаловать в StackOverflow!

Вот мой взгляд на ваши вопросы:

  1. Не похоже, что Натч создает какой-то шаблон. Вот исходный код для ElasticIndexWriter и, как видите, нигде нет ссылки на какой-либо шаблон.

  2. Поскольку Nutch не создает никакого шаблона индекса, вы не можете его изменить... но вы определенно можете создать его самостоятельно непосредственно в своем кластере ES, если хотите/нужно контролировать сопоставление определенных полей.

Вы можете начать с сопоставления по умолчанию, созданного Nutch (то есть того, которое вы вставили в свой вопрос), и повторить его. Создание шаблона из него тривиально, то есть вы просто добавляете свойство "template": "nutch*" (первая строка ниже), и все готово (доступна дополнительная информация о том, как изменить сопоставления доступно здесь):

curl -XPUT localhost:9200/_template/nutch_template -d '{
  "template": "nutch*",
  "mappings": {
    "doc": {
      "properties": {
        "anchor": {
          "type": "string"
        },
        "boost": {
          "type": "string"
        },
        "cache": {
          "type": "string"
        },
        "content": {
          "type": "string"
        },
        "contentLength": {
          "type": "string"
        },
        "date": {
          "type": "date",
          "format": "dateOptionalTime"
        },
        "digest": {
          "type": "string"
        },
        "host": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "lang": {
          "type": "string"
        },
        "lastModified": {
          "type": "date",
          "format": "dateOptionalTime"
        },
        "segment": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "tstamp": {
          "type": "date",
          "format": "dateOptionalTime"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    }
  }
}'

3-4. Существует описание всех полей, проиндексированных/сохраненных Nutch в их вики, так что вы можете изменить сопоставление выше, чтобы хранить/индексировать определенные поля по-разному, чтобы соответствовать вашим точным потребностям.

Примечание: сначала обязательно очистите свой текущий индекс nutch, затем создайте свой шаблон (пункт 2 выше), а затем, когда Nutch проиндексирует свой первый документ, индекс будет создан автоматически.

Вам также может быть интересно изучить проблему FLUME-2787, как кажется другим. пройти через создание шаблона самостоятельно. Возможно, вы найдете там какие-нибудь наггетсы.

person Val    schedule 03.12.2015
comment
На самом деле я сначала просмотрел исходный код автора индекса - и, как вы сказали, нет ссылки на шаблон. Я думаю, что мне не хватало списка полей, которые индексируются/сохраняются Nutch, о котором вы упомянули (в их вики). Таким образом, также в зависимости от того, что вы включили в списке плагинов в nutch-site.xml, модуль записи индекса nutch будет генерировать сопоставления elasticsearch на основе такого списка полей. Изучив сгенерированные сопоставления, можно также сделать вывод, какие плагины были успешно включены (или нет). Полученные сопоставления затем, в свою очередь, можно найти в elasticsearch, как это сделал я; Правильно? - person wbartussek; 03.12.2015
comment
Удалось ли вам попробовать это до сих пор? - person Val; 04.12.2015