По умолчанию поля не чувствительны к регистру из-за примененного упругого отображения.
Попробуйте ниже:
PUT myindex/doc/1
{
"name":"TEST"
}
GET myindex/_mapping
Возвращается:
{
"myindex": {
"mappings": {
"doc": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
Теперь, если вы сделаете запрос ниже, он вернет совпадение (обратите внимание на отображение [текст и ключевое слово]):
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
type-, если указать поле для индексации только keyword
type, оно будет чувствительно к регистру.