ElasticSearchフィールドに、分析したくないフィールドがあります。 e。保存して比較する必要があります。値には、文字、数字、空白、ダッシュ、スラッシュ、およびその他の文字が含まれます。
このフィールドのマッピングでアナライザーを指定しない場合、デフォルトでは、文字列を単語の塊にハッキングするトークナイザーが使用されます。私はそれを望んでいません。
基本的に分析しない、非常にシンプルなアナライザーはありますか?または、このフィールドを分析しないことを示す別の方法がありますか?
インデックスを作成するだけで、他には何もしません。事前に構成されたアナライザーの組み込み名と思われる他のフィールドには、「english」などのアナライザーを使用できます。他の名前のリストはありますか?私のニーズに合ったものがあるかもしれません(つまり、入力に対して何もしません)。
これは現在私のマッピングです:
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string" }
}
}
}
my_field1
は言語依存です。これはうまくいくようです。 my_field2
は逐語的でなければなりません。そこで、何もしないアナライザーを提供したいと思います。
my_field2
のサンプル値は"B45c 14/04"
です。
"my_field2": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
}
詳細については、こちらをご覧ください https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html .
here のようにstring
(keyword
と ``に置き換えられた)タイプが削除されたため、これはもはや当てはまりません。代わりに、"index": true | false
を使用する必要があります。
例OLDの場合:
{
"foo": {
"type" "string",
"index": "not_analyzed"
}
}
新規になります:
{
"foo": {
"type" "keyword",
"index": true
}
}
つまり、フィールドはインデックス付けされますが、keyword
と入力されるため、暗黙的に分析されません。
keyword
アナライザーも使用できます。
_// don't actually use this, use "index": "not_analyzed" instead
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string", "analyzer": "keyword" }
}
}
}
_
ここに記載されているように: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html 、これらのフィールドを_not_analyzed
_。
ただし、keyword
アナライザーは、デフォルトでインデックス全体に設定されている場合に役立ちます。
更新:コメントで述べたように、string
は5.Xではサポートされなくなりました