问题描述
在 Elasticsearch 中,我想用我的自定义分析器索引一些字段。所以首先,我添加了额外的配置我的分析器
Liferay -> 控制面板 -> 系统设置 -> " Serach Elasticsearch 并选择'-Elasticsearch 7-' -->"
其他索引配置
DataContext = new viewmodel()
覆盖类型映射
{
"analysis": {
"analyzer": {
"mmc_custom": {
"tokenizer": "standard","filter": [
"standard","my_ascii_folding","lowercase"
]
}
},"filter": {
"my_ascii_folding": {
"type": "asciifolding","preserve_original": true
}
}
}
}
在Liferay Elasticsearch中添加这个属性后,我重置了索引,重启了Liferay。 Portal 使用我的映射和分析器正确创建了一个新索引。然后我重新索引了我的文档。当我在 Elasticsearch 中搜索时,它显示了预期的结果,我看到它按照我的意愿分析了我的字段。但是当我通过 Liferay 门户搜索时,我没有看到任何变化,我的领域没有被分析。我做错了什么?我有新的索引和数据来自它,为什么 Liferay 看不到它?
我提到了这个site。
解决方法
如果你想在 Liferay 中使用自定义分析器,你需要执行两个步骤。
- 编写分析器
- 定义映射以覆盖 Liferay 映射
让我解释一下
-
编写你的分析器 在附加索引配置中写在分析器下面
{ "analysis":{ "filter":{ "my_synonym_filter":{ "type":"synonym","synonyms":[ "british,english","queen,monarch" ] } },"analyzer":{ "custom_analyzer":{ "tokenizer":"standard","filter":[ "lowercase","my_synonym_filter","asciifolding","stemmer" ] } } } }
-
现在您的分析器已准备就绪,现在您可以覆盖 Liferay 映射
要覆盖映射,您可以复制 Liferay 映射文件(控制面板 -> 搜索 -> 字段映射)
根据您的要求进行更改(将 liferay-{company name} 更改为 LiferayDocumentType)
所以现在新文件将如下所示
{
"LiferayDocumentType" : {
"dynamic_templates" : [
//Your mappings
]
}
}
在字段中添加这个覆盖文件(覆盖类型映射)
然后重新索引数据,然后您可以使用搜索来测试您的分析器