如何在使用ICU插件的Elasticsearch中保留音译期间的原始术语?

时间:2018-01-12 18:44:20

标签: elasticsearch icu transliteration

我正在使用下面的ICU变换过滤器来进行音译

"transliterate": {
    "type": "icu_transform",
    "id": "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC"
}

目前的问题是此过滤器会替换索引中的原始术语,因此使用术语查询无法使用本机语言进行搜索

{                
   "terms" : {    
     "field" : [   
       "term"    
     ],           
     "boost" : 1.0
   }              
 }

有没有办法让icu_transform过滤器生成2个术语原始的并且音译一个?

如果不是,我认为最佳解决方案是将复制到另一个字段和分析器,而没有音译过滤器。你能建议smth更有效吗?

我正在使用Elasticsearch 5.6.4

1 个答案:

答案 0 :(得分:0)

Multi-fields允许您以不同方式将相同的源值索引到不同的字段。您可以使用标准分析器索引到字段,使用应用ICU变换过滤器的分析器索引到另一个字段。例如,

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_field": {
          "type": "text",
          "fields": {
            "latin": {
              "type": "text",
              "analyzer": "latin"
            }
          }
        }
      }
    }
  }
}

然后,您可以查询my_fieldmy_field.latin字段。