如何在elasticsearch中存储没有HTML的文档?

问题描述:

我想索引一个包含汉字/单词的文档。在一些领域也有一些HTML标签。如何在elasticsearch中存储没有HTML的文档?

我使用“html_strip”来避免将HTML编入索引,但我的问题是该文档与elasticsearch中的HTML一起存储。这是我的指标设置和映射:

PUT test 
{ 
    "settings" : { 
    "index" : { 
     "number_of_shards" : 1, 
     "number_of_replicas" : 0 
    }, 
    "analysis": { 
     "analyzer": { 
     "ch_analyzer": { 
      "tokenizer": "icu_tokenizer", 
      "char_filter": [ "html_strip" ] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "qa": { 
     "properties": { 
     "comment_desc": { 
      "type":  "text", 
      "analyzer": "ch_analyzer" 
     }, 
     "article_title": { 
      "type":  "text", 
      "analyzer": "ch_analyzer" 
     }, 
     "article_desc": { 
      "type":  "text", 
      "analyzer": "ch_analyzer" 
     } 
     } 
    }, 
    "sport": { 
     "properties": { 
     "title": { 
      "type":  "text", 
      "analyzer": "ch_analyzer" 
     }, 
     "content": { 
      "type":  "text", 
      "analyzer": "ch_analyzer" 
     } 
     } 
    } 
    } 
} 

例如我有以下内容:

"<p><br/>台灣人,奧運直播,使用PPStream,(PPS網路電視),觀看同步奧運實況</b>!" 

它实际上是索引,但它会被存储为是。

我应该如何更改我的映射以删除存储的文档中的HTML部分? 我能做些什么来将这些文本存储在我的Elasticsearch中去掉了它的HTML组件?

+0

可能重复:https://stackoverflow.com/questions/45903243/elasticsearch-prevent-html-tags-from-being-searchable – Ansaldos

+0

这个问题不重复。我成功地使其不可搜索,我只是想以我没有存储在HTML文档中的方式存储它 – mel

如果您想在Elasticsearch上完成此操作(而不是预处理步骤),则必须使用ingest node。没有任何ingest processor正是你想要的,所以你将不得不使用脚本处理器或编写一个插件来做到这一点。

根据您的使用情况,在预处理步骤(使用您选择的语言的代码)中执行此操作可能会更容易。