在索引到elasticsearch之前去除HTML标记

时间:2015-02-11 01:55:36

标签: elasticsearch

我正在使用Nodejs将HTML文件编入索引。然而,甚至在使用Nodejs之前,我尝试运行以下手动索引,这看起来并不起作用。我缺少什么?

使用html_strip过滤器索引示例HTML标记:

curl -XPOST 'localhost:9200/bhs/articles/_analyzer?tokenizer=standard&char_filters=html_strip' -d '
{
    "content" : "<title>Dilip Kumar</title>"
}'

搜索以获取所有文件:

http://localhost:9200/bhs/articles/_search

结果如下:

{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
      {
        "_index": "bhs",
        "_type": "articles",
        "_id": "AUt2TGl9aadd5iLJ3mue",
        "_score": 1,
        "_source": {
          "content": "<title>Dilip Kumar</title>"
        }
      }
    ]
  }
}

理想情况下,它不应该索引标记,因为我使用了html_filter来剥离标记。

1 个答案:

答案 0 :(得分:0)

您在返回的搜索结果中看到的是存储的内容,即这不是已编入索引的单个字词。

"content": "<title>Dilip Kumar</title>"

要查看已编入索引的内容更具挑战性 - 索引条款不会设计为返回给用户,而只会在搜索时使用。

但是,您可以使用脚本访问和查看它们:

curl 'http://localhost:9200/bhs/articles/_search?pretty=true' -d '{
  "query" : {
    "match_all" : { }
  },
  "script_fields": {
    "terms" : {
        "script": "doc[field].values",
        "params": {
            "field": "content"
        }
    }
  }
}'