2015-04-08 70 views
2

我想用動態模板創建索引並關閉字符串字段的分析。我已經爲彈性搜索創建了查詢,但是如何將它轉換爲elastic4s語句? (版本1.3.x的elastic4s是優先停留)如何將帶有映射模板的索引與elastic4s進行彈性搜索?

的說法是:

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 :(

回答

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 
     } 
) 
2

所以有時候用原始的JSON管理你的映射會更容易。您可以將原始JSON放在文件上,以便無需重新編譯應用程序就可以進行更新。如果你想用這個原始JSON創建索引,你可以做這樣的事情:

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

其中rawMapping與您的原始JSON內容的字符串。