Я хочу сделать запрос с подстановочными знаками для QNMZ-1900
Как я читал в документах и пробовал сам, стандартный токенизатор Elasticsearch разбивает слова на дефисы, например QNMZ-1900
будет разбит на QNMZ
и 1900
.
Чтобы предотвратить такое поведение, я использую функцию not_analyzed
.
curl -XPUT 'localhost:9200/test-idx' -d '{
"mappings": {
"doc": {
"properties": {
"foo" : {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'
Я помещаю что-то в свой индекс:
curl -XPUT 'localhost:9200/test-idx/doc/1' -d '{"foo": "QNMZ-1900"}'
Обновление:
curl -XPOST 'localhost:9200/test-idx/_refresh'
Теперь я могу использовать запрос с подстановочными знаками и найти QNMZ-1900
:
curl 'localhost:9200/test-idx/doc/_search?pretty=true' -d '{
"query": {
"wildcard" : { "foo" : "QNMZ-19*" }
}
Мой вопрос:
Как выполнить запрос с подстановочными знаками с условием поиска в нижнем регистре?
Я пробовал:
curl -XDELETE 'localhost:9200/test-idx'
curl -XPUT 'localhost:9200/test-idx' -d '{
"mappings": {
"doc": {
"properties": {
"foo" : {
"type": "string",
"index": "not_analyzed",
"filter": "lowercase"
}
}
}
}
}'
curl -XPUT 'localhost:9200/test-idx/doc/1' -d '{"foo": "QNMZ-1900"}'
curl -XPOST 'localhost:9200/test-idx/_refresh'
но мой строчный запрос:
curl 'localhost:9200/test-idx/doc/_search?pretty=true' -d '{
"query": {
"wildcard" : { "foo" : "qnmz-19*" }
}
}'
ничего не находит.
Как это исправить?