2015-09-17 47 views
2

我的映射有4個字符串字段:如何根據要插入的文檔在Elasticsearch中使用不同的分析器?

  • 「名」
  • 「信息」
  • 「語言」
  • 「流派」

和4個自定義分析:

  • 「english_custom_analyzer」
  • 「french_custom_analyzer」
  • 「spanish_custom_analyzer」
  • 「arabic_custom_analyzer」

我希望能夠指定將使用的語言領域的文檔時使用的分析儀。 因此,如果語言是英語,我想使用英語分析儀處理文檔字段,如果語言是法語,我想使用法語Analayzer。

我試圖創建一個名爲「language_name_analyzer」的額外字段,在插入時使用分析器名稱填充該字段,並將分析器名稱設置爲「language_name_analyzer」。但是,我得到這個錯誤:

Cause: org.elasticsearch.index.mapper.MapperParsingException: Analyzer [language_name_analyzer] not found for field [datacontent_onair_title] 

謝謝

回答

1

首先,我會建議使用此功能重新考慮,因爲它has been removed從elasticsearch 2.0的下一個主要版本。

如果你仍然想使用它,你需要指定到language_name_analyzer領域的路徑映射:

{ 
    "type1" : { 
     "_analyzer" : { 
      "path" : "language_name_analyzer" 
     }, 
     "properties": { 
      //// your other fields 
     } 
    } 
} 
+0

謝謝。有沒有更好的解決方案來解決我的問題?我不能成爲唯一需要支持多語言分析器的人。 – danielz

+0

是的,請檢查[混合語言陷阱](https://www.elastic.co/guide/en/elasticsearch/guide/current/language-pitfalls.html)和權威指南的以下部分。 – imotov

+0

謝謝,我最終爲每種語言創建了一個單獨的索引,並創建了一個搜索查詢來搜索所有索引。 – danielz

相關問題