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
                    }
                  }
                }
            ]
}}}

PS

この「生の」リクエストを実行することでこのインデックスを作成することは可能かもしれませんが、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 に答える