我希望使用动态模板创建索引,并为字符串字段分析。我已经为弹性搜索创建了查询,但是如何将其转换为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做到这一点:(
答案 0 :(得分: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
}
)
答案 1 :(得分:2)
有时,在原始JSON中管理映射会更容易。您可以将原始JSON放在文件上,以便无需重新构建应用程序即可进行更新。如果要使用此原始JSON创建索引,可以执行以下操作:
client.execute {
create index "myIndex" source rawMapping
}
其中rawMapping
是包含原始JSON内容的字符串。