我正在使用 Elasticsearch,并使用 WebRequest 编写自己的包装器,因为 NEST(通常的选择)令人费解地似乎缺乏插入项目并返回生成的 ID 的能力。
无论如何-一般方法没有问题。但是,任何 HTML 内容都按原样编入索引,即,如果我<strong>test</strong>
在某个字段中,则搜索“strong”查询会返回该项目。
根据我发现的随机留言板帖子,我已将其放在 elasticsearch.yml 中:
index:
analysis:
analyzer:
htmlContentAnalyzer:
type: custom
tokenizer: standard
filter: standard
char_filter: html_strip
然后,我为我的索引“内容”、项目类型“新闻”创建了一个映射:
PUT http://localhost:9200/content/news/_mapping
{
"news" : {
"properties" : {
"TextContent" : {
"type" : "string",
"index" : "analyzed",
"analyzer" : "htmlContentAnalyzer",
"store" : "yes"
}
}
}
}
}
store
/yes
只是为了“有趣”,没有区别。以上给了我200 OK。
但是,搜索返回相同的结果。
没有帮助的是弹性搜索文档似乎令人震惊。看看这个页面:
http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html
它为您简要介绍了映射是什么,并在映射部分中说明了更多详细信息,即此页面:
http://www.elasticsearch.org/guide/reference/mapping/
......这似乎真的很可怕。没有提到我发现的格式/对象图 - 没有提到“属性”、“类型”、“分析器”、“索引”等。右边的菜单上有一些部分,例如“_index”,但它们似乎是指整个项目?那是在哪里指出的?
所以我的问题是在两个方面:
- 如何停止索引 HTML 标记(以及我猜的实体、属性值)?- 我仍然希望存储 HTML,请注意
- 是否有更好的弹性搜索信息/文档来源?或者我是在没有超级秘密解码器眼镜的情况下看它吗?