5

我正在使用 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,请注意
  • 是否有更好的弹性搜索信息/文档来源?或者我是在没有超级秘密解码器眼镜的情况下看它吗?
4

1 回答 1

3

在#elasticsearch(freenode IRC)上感谢chrismale -

搜索_all是不好的:那是用它自己的分析器索引的。查询我的TextContent领域特别按预期工作。

于 2012-10-09T23:03:27.167 回答