Как обработать HTML-содержимое с помощью Java в файлах JSON, введенных в ElasticSearch с помощью Logstash? - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь загружать файлы (статьи с заголовком, телом и т. Д.) В ElasticSearch, используя Logstash и Kafka. Файлы находятся в формате JSON (поля - заголовок, тело и т. Д.), А поле тела - в HTML. Моя версия ElasticSearch - 5.1.2. Я использую Java REST Client (TransportClient) для взаимодействия с ElasticSearch.

Как мне обработать исходные файлы, загруженные с помощью Logstash, в ElasticSearch, чтобы соответствующим образом заменить все теги и их атрибуты, и сохранить их обратно в том же индексе?

Q1) обработка содержимого HTML с использованием Java Q2) Обработка загруженных файлов Logstash и хранение только обработанных файлов.

Я пытался использовать addCharFilter's AnalyzeRequest's html_strip, который, как я думал, является эквивалентом HtmlStripCharFilter (https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html),, но html_strip возвращает токены только с удаленными символами «<» и «>>, но не с тегами и атрибутами, в отличие от HTMLStripCharFilter.

Я прилагаю свой код для этого.

String text = "<p>tag<p>";
AnalyzeRequest analyzeRequest = (new AnalyzeRequest(indexName)).text(text).addCharFilter("html_strip");
List<AnalyzeResponse.AnalyzeToken> tokens = client.admin().indices().analyze(analyzeRequest).actionGet().getTokens();
String tmp = "";
for(AnalyzeResponse.AnalyzeToken token:tokens) {
tmp += token.getTerm() + " ";
}
System.out.println(tmp);

Выход: Я ожидаю - «тег», но Я получаю - "p tag p"

Я также сталкивался с PreBuiltCharFilters (также HtmlStripCharFilterFactory), но я не совсем уверен, как его использовать. И я не сталкивался с примерами кода для подобного варианта использования.

Так как мне поступить об этом? Спасибо.

...