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

Из коробки средство записи индекса ореха для asticsearch генерирует индекс в asticsearch с именем, указанным в nutch-site.xml (или nutch-default.xml) в элементе свойства:

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

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

   {
       "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. Где я могу найти больше информации об этом?

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

1 ответ

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

Вот мой ответ на ваши вопросы:

  1. Не похоже, что Nutch создает какой-либо шаблон. Вот исходный код 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, так как, кажется, кто-то еще сам прошел процесс создания шаблона. Вы можете найти там самородки.

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