Последние несколько дней я ходил по домам, пробуя разные порядки, но не могу понять, почему он не работает.
Я пытаюсь создать индекс в Elasticsearch с помощью анализатора, который являетсяаналогично «стандартному» анализатору, но сохраняет записи в верхнем регистре при сохранении записей.
Я создаю свой анализатор и индекс следующим образом:
PUT /upper
{
"settings": {
"index" : {
"analysis" : {
"analyzer": {
"rebuilt_standard": {
"tokenizer": "standard",
"filter": [
"standard"
]
}
}
}
}
},
"mappings": {
"doc": {
"properties": {
"title": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
}
}
}
Затем добавьте две записи для проверки, как это ...
POST /upper/doc
{
"text" : "TEST"
}
Добавить вторую запись ...
POST /upper/doc
{
"text" : "test"
}
Использование / upper / _settings дает следующее:
{
"upper": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "upper",
"creation_date": "1537788581060",
"analysis": {
"analyzer": {
"rebuilt_standard": {
"filter": [
"standard"
],
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "s4oDgdsFTxOwsdRuPAWEkg",
"version": {
"created": "6030299"
}
}
}
}
}
Но при поиске по следующему запросу я все равно получаю два совпадения!И верхний, и нижний регистры, которые должны означать, что анализатор не применяется, когда я сохраняю записи.
Искать так ...
GET /upper/_search
{
"query": {
"term": {
"text": {
"value": "test"
}
}
}
}
Заранее спасибо!