Elasticsearch – indeksowanie dokumentów

Posiadając zbiór danych, których nie możemy przeszukiwać i analizować, sprawiamy, że stają się one bezużyteczne. Dokumenty, często gromadzone latami, przechowywane w różnych formatach, mogą stanowić cenne źródło informacji. Jak więc rozwiązać problem i umożliwić użytkownikom dostęp do treści plików takich jak *.doc, *.docx, *.pdf itp.? Z pomocą przychodzi nam narzędzie Elasticsearch.

Czym jest Elasticsearch?

Elasticsearch jest silnikiem wyszukiwania pozwalającym na dostęp do danych za pomocą RESTowego API. Mając zbiór dokumentów, możemy wyciągnąć z nich treść i pozwolić użytkownikom na jego przeszukiwanie. Elasticsearch do wyszukiwania danych wykorzystuje bibliotekę Apache Lucene.
Zaczynamy od pobrania i uruchomienia Elasticsearcha (jeżeli jest potrzeba to ustawienia silnika możemy zmienić edytując plik elasticsearch.yml z katalogu config). W przypadku systemu Windows, Elasticsearcha startujemy za pomocą pliku elasticsearch.bat. Jeżeli nie wystąpiły żadne problemy po adresem http://localhost:9200/ powinniśmy zobaczyć odpowiedź z ES:
{
  „name” : „wygZSEX”,
  „cluster_name” : „elasticsearch”,
  „cluster_uuid” : „k6pPVNJzQ1Otc7OQFVkeVA”,
  „version” : {
    „number” : „5.5.2”,
    „build_hash” : „b2f0c09”,
    „build_date” : „2017-08-14T12:33:14.154Z”,
    „build_snapshot” : false,
    „lucene_version” : „6.6.0”
  },
  „tagline” : „You Know, for Search”
}
Indeksowania dokumentów możemy dokonać przy pomocy narzędzia FSCrawler. Uruchamiamy go przy pomocy fscrawler.bat podając w parametrze nazwę joba. Przy pierwszym uruchomieniu stworzony zostanie plik z ustawieniami, który odpowiednio uzupełniamy:
{
  „name” : „docs”,
  „fs” : {
  „url” : „/tmp/es”,
  „update_rate” : „15m”,
  „excludes” : [ „~*” ],
  „json_support” : false,
  „filename_as_id” : false,
  „add_filesize” : true,
  „remove_deleted” : true,
  „add_as_inner_object” : false,
  „store_source” : false,
  „index_content” : true,
  „attributes_support” : false,
  „raw_metadata” : true,
  „xml_support” : false,
  „index_folders” : true,
  „lang_detect” : false,
  „continue_on_error” : false,
  „pdf_ocr” : true,
  „ocr” : {
  „language” : „eng”
  }
  },
  „elasticsearch” : {
  „nodes” : [ {
  „host” : „127.0.0.1”,
  „port” : 9200,
  „scheme” : „HTTP”
  } ],
  „bulk_size” : 100,
  „flush_interval” : „5s”
  },
  „rest” : {
  „scheme” : „HTTP”,
  „host” : „127.0.0.1”,
  „port” : 8080,
  „endpoint” : „fscrawler”
  }
}
Uruchamiając ponownie FSCrawlera, dokumenty z katalogu ustawionego we właściwości url zostaną zaindeksowane i dodane do Elasticsearcha. Możemy teraz przeszukiwać nasz zbiór dokumentów przy pomocy RESTowego API: http://localhost:9200/docs/_search/?size=1000&pretty=true.
Facebooktwitter

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *