Вы можете использовать настройку coerce
, но я думаю, что она работает только наоборот - т.е. не позволяет индексировать строки как числа:
PUT roddo
{
"mappings": {
"properties": {
"username": {
"type": "integer",
"coerce": false
}
}
}
}
Таким образом, пытаясь
POST roddo/_doc
{
"username": "10"
}
выдаст ошибку Integer value passed as String
.
В качестве альтернативы, вы можете расширить функциональность имени пользователя:
PUT roddo2
{
"mappings": {
"properties": {
"username": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
},
"integer": {
"type": "integer",
"coerce": true,
"ignore_malformed": true
}
}
}
}
}
}
, которая будет пытаться выполнить Принудительно, но не вызовет исключение при сбое.
После синхронизации ваших документов вы сможете найти те, которые не имеют целочисленные имена пользователей:
GET roddo2/_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "username.integer"
}
}
}
}
}