我已经定义了一个分析器,如:
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
而不是让我的仪器字段很好地标记并阻止我得到与输入相同的东西。我应该怎样做才能让我的分析器处理我想要索引的文档,如果我想在索引文档时添加一些东西?。
答案 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"
}