2016-05-13 45 views
1

分析我已經定義了一個分析,如:在elasticsearch指數插入文檔,並經分析儀

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, 「風格」: 「搖滾」, 「樂器」: 「連擊,ELECTR,guit,guit,飛雁」 }

但是,當我執行此:GET /train-music/music/1而不是讓我的樂器領域表現得很好,並且阻止我獲得與我的輸入相同的東西。我應該如何使我的分析器在我想索引的文檔上工作,當我想索引我的文檔時,是否應該添加一些內容?

回答

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" 
} 
+0

謝謝你很多:) – mel