我想索引包含中文字符/单词的文档。在某些字段中还有一些HTML标记。
我使用“html_strip”来避免将HTML编入索引,但我的问题是文档与弹性搜索中的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 :(得分:1)
如果要在Elasticsearch上执行此操作(而不是作为预处理步骤),则必须使用ingest node。没有任何ingest processor完全符合您的要求,因此您必须使用脚本处理器或编写插件来执行此操作。
根据您的使用情况,可能更容易在预处理步骤中执行此操作(使用您选择的语言编写代码)。