在弹性搜索索引中插入文档并由分析器进行分析

时间:2016-05-13 14:05:43

标签: elasticsearch indexing tokenize

我已经定义了一个分析器,如:

PUT /train-music
{
  "settings": {
    "analysis": {
      "analyzer": {
        "music_analyser": {
          "filter": [
            "lowercase",
            "snowball"
          ],
          "type": "custom",
          "tokenizer": "standard"
        }
      }
    }
  }
}

我的火车音乐索引的映射如下:

PUT /train-music/_mapping/music
{
  "properties": {
    "instruments": {
      "type": "string",
      "analyzer": "music_analyser"
    }
  }
}

然后我正在插入一份文件:

POST /train-music/music/1
{
 "id": 1452,
 "style": "rock",
 "instruments":"battery, electric guitar, guitar, piano"
 }

我期待类似的东西(我假装干掉):

{     “id”:1452,     “风格”:“摇滚”,     “乐器”:“击球手,电子,吉他,吉他,pian”  }

但是当我执行此操作时:GET /train-music/music/1而不是让我的仪器字段很好地标记并阻止我得到与输入相同的东西。我应该怎样做才能让我的分析器处理我想要索引的文档,如果我想在索引文档时添加一些东西?。

1 个答案:

答案 0 :(得分:1)

你不应该做任何事情,这是由Elasticsearch在幕后完成的。如果您想查看实际编制索引的条款,可以使用

GET /train-music/music/_search
{
  "fielddata_fields": ["instruments"]
}

即使在编制索引之前,您也可以使用_analyze API检查分析仪是否正常工作:

GET /train-music/_analyze
{
  "analyzer" : "music_analyser",
  "text" : "battery, electric guitar, guitar, piano"
}