如何在 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 中使用自定义分析器,您需要执行两个步骤。

  1. 编写分析器
  2. 定义映射以覆盖 Liferay 映射

我来解释一下

  1. 写你的分析器 在附加索引配置中写在分析器下面

     {
    "analysis":{
       "filter":{
          "my_synonym_filter":{
             "type":"synonym",
             "synonyms":[
                "british,english",
                "queen,monarch"
             ]
          }
       },
       "analyzer":{
          "custom_analyzer":{
             "tokenizer":"standard",
             "filter":[
                "lowercase",
                "my_synonym_filter",
                "asciifolding",
                "stemmer"
             ]
          }
       }
    }
     }
    
  2. 现在您的分析器已准备就绪,现在您可以覆盖 Liferay 映射

要覆盖映射,您可以复制 Liferay 映射文件(控制面板 -> 搜索 -> 字段映射)

根据您的要求进行更改(将 liferay-{company name} 更改为 LiferayDocumentType)

现在新文件如下所示

{
    "LiferayDocumentType" : {
       "dynamic_templates" : [
              //Your mappings
       ]
    }
}

在字段中添加此覆盖文件(覆盖类型映射)

然后重新索引数据,然后您可以使用搜索来测试您的分析器