我想指定一个分析器,为其命名,并在创建索引时在映射中使用该名称。我迷路了,我的 ES 实例总是返回错误消息。
这大概是我想做的:
"settings": {
"mappings": {
"alfedoc": {
"properties": {
"id": { "type": "string" },
"alfefield": { "type": "string", "analyzer": "alfeanalyzer" }
}
}
},
"analysis": {
"analyzer": {
"alfeanalyzer": {
"type": "pattern",
"pattern":"\\s+"
}
}
}
}
但这似乎行不通; ES 实例总是返回一个错误,比如
MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]];
我尝试将字典的 "analysis"
分支放在几个地方(在映射内部等),但无济于事。我想一个完整的工作示例(我现在找不到)也会帮助我。可能我遗漏了一些相当基本的东西。
最佳答案
“分析”位于“设置” block 中,在创建索引时位于“映射” block 之前或之后。
"settings": {
"analysis": {
"analyzer": {
"alfeanalyzer": {
"type": "pattern",
"pattern": "\\s+"
}
}
}
},
"mappings": {
"alfedoc": { ... }
}
这是一个很好的完整示例:Example 1
关于indexing - 如何在 ElasticSearch 中创建索引时指定分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237817/