Elasticsearchでは、大文字と小文字を区別せずにドキュメントをクエリできますか?または、クエリを実行する前に、大文字と小文字を区別しないものとして保存する必要がありますか?または、大文字と小文字を区別しないようにインデックス全体に設定する必要のある設定はありますか?
この瞬間を明確にしていただけませんか?
デフォルトでは、マッピングエラスティックが適用されているため、フィールドでは大文字と小文字が区別されません。
以下をお試しください:
PUT myindex/doc/1
{
"name":"TEST"
}
GET myindex/_mapping
戻るはずです:
{
"myindex": {
"mappings": {
"doc": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
以下でクエリを実行すると、一致が返されます(mapping [text andkeyword]に注意してください)。
POST myindex/_search
{
"query": {
"match": {
"name2": "test"
}
}
}
ここで、フィールドにkeyword
としてインデックスを付けるように明示的に指定すると、大文字と小文字が区別される検索になります。以下を試してみてください。結果は返されません。
PUT myindex/_mapping/doc
{
"properties": {
"name2": {
"type": "keyword"
}
}
}
PUT myindex/doc/1
{
"name2":"TEST"
}
POST myindex/_search
{
"query": {
"match": {
"name2": "test"
}
}
}
TLDR;デフォルトのマッピングまたはtext
タイプを使用します-keyword
タイプのみにインデックスを付けるようにフィールドを指定すると、大文字と小文字が区別されます。