如何在 liferay 中创建自定义 Elasticsearch 分析器
How to create a custom Elasticsearch analyzer in liferay
在 Elasticsearch 中,我想用我的自定义分析器索引一些字段。所以首先,我添加了额外的配置我的分析器
Liferay -> 控制面板 -> 系统设置 -> "Serach Elasticsearch and select '-Elasticsearch 7-' -->"
其他索引配置
{
"analysis": {
"analyzer": {
"mmc_custom": {
"tokenizer": "standard",
"filter": [
"standard",
"my_ascii_folding",
"lowercase"
]
}
},
"filter": {
"my_ascii_folding": {
"type": "asciifolding",
"preserve_original": true
}
}
}
}
覆盖类型映射
"title": {
"mapping": {
"analyzer": "mmc_custom",
"index": "analyzed",
"store": "true",
"term_vector": "with_positions_offsets",
"type": "string"
}
}
在 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
]
}
}
在字段中添加此覆盖文件(覆盖类型映射)
然后重新索引数据,然后您可以使用搜索来测试您的分析器
在 Elasticsearch 中,我想用我的自定义分析器索引一些字段。所以首先,我添加了额外的配置我的分析器
Liferay -> 控制面板 -> 系统设置 -> "Serach Elasticsearch and select '-Elasticsearch 7-' -->"
其他索引配置
{
"analysis": {
"analyzer": {
"mmc_custom": {
"tokenizer": "standard",
"filter": [
"standard",
"my_ascii_folding",
"lowercase"
]
}
},
"filter": {
"my_ascii_folding": {
"type": "asciifolding",
"preserve_original": true
}
}
}
}
覆盖类型映射
"title": {
"mapping": {
"analyzer": "mmc_custom",
"index": "analyzed",
"store": "true",
"term_vector": "with_positions_offsets",
"type": "string"
}
}
在 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
]
}
}
在字段中添加此覆盖文件(覆盖类型映射)
然后重新索引数据,然后您可以使用搜索来测试您的分析器