2

我想用动态模板创建索引并关闭字符串字段的分析。我已经为弹性搜索创建了查询,但是如何将其转换为 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
                    }
                  }
                }
            ]
}}}

附言

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

4

2 回答 2

2

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
      }
  )
于 2015-04-09T13:43:30.770 回答
2

有时在原始 JSON 中管理映射会更容易。您可以将原始 JSON 放在一个文件中,以便在无需重新构建应用程序的情况下进行更新。如果你想使用这个原始 JSON 来创建索引,你可以这样做:

client.execute {
    create index "myIndex" source rawMapping
}

rawMapping包含原始 JSON 内容的字符串在哪里。

于 2016-06-24T17:35:10.807 回答