我想使用动态模板创建索引并关闭对字符串字段的分析。我已经创建了用于 flex 搜索的查询,但是如何将其转换为elastic4s语句? (建议使用elastic4s 1.3.x版)

该语句是:

PUT /myIndex
{
    "mappings": {
        "myType": {
            "dynamic_templates": [
                {
                    "templateName": {
                        "match":              "*",
                        "match_mapping_type": "string",
                        "mapping": {
                            "type":           "string",
                            "index" : "not_analyzed",
                            "omit_norms" : true
                    }
                  }
                }
            ]
}}}

P.S.

可能可以通过执行此“原始”请求来创建此索引,但是我没有找到如何使用elastic4s 1.3.4来做到这一点:(

最佳答案

创建索引时,Elastic4s(自1.5.4起)支持动态模板。因此,您可以执行以下操作:

 val req = create.index("my_index").mappings(
    "my_type" templates (
      template name "es" matching "*_es" matchMappingType "string" mapping {
        field withType StringType analyzer SpanishLanguageAnalyzer
      },
      template name "en" matching "*" matchMappingType "string" mapping {
        field withType StringType analyzer EnglishLanguageAnalyzer
      }
    )
  )

因此,与您发布的示例等效:
  create.index("my_index").mappings(
    "my_type" templates (
      template name "templateName" matching "*" matchMappingType "string" mapping {
        field typed StringType index NotAnalyzed omitNorms true
      }
  )

08-05 07:42