在 elasticsearch 索引中插入一个文档并让分析器对其进行分析
Insert a document in an elasticsearch index and have it analysed by the analyser
我定义了一个分析器,例如:
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,
"style": "rock",
"instruments":"batter, electr, guit, guit, pian"
}
但是当我执行此操作时:GET /train-music/music/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"
}
我定义了一个分析器,例如:
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, "style": "rock", "instruments":"batter, electr, guit, guit, pian" }
但是当我执行此操作时:GET /train-music/music/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"
}