Я создаю способ поиска слов на тайском языке с помощью Elasticsearch и Kibana. У меня проблема с отображением.
PUT test
{
"settings": {
"analysis": {
"analyzer": {
"trigrams": {
"tokenizer": "trigram_tokenizer",
"filter": [
"lowercase"
]
}
},
"tokenizer": {
"trigram_tokenizer": {
"type": "ngram",
"min_ngram": 3,
"max_ngram": 3,
"token_chars": []
}
}
}
},
"mappings": {
"true_name": {
"properties": {
"correct": { "type": "text", "analyzer": "trigrams" }
}
}
}
}
И ошибка такая
{
"error" : {
"root_cause" : [
{
"type" : "mapper_parsing_exception",
"reason" : "Root mapping definition has unsupported parameters: [true_name : {properties = {correct = {analyzer=trigrams, type=text}}}]"
}
],
"type" : "mapper_parsing_exception",
"reason" : "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [true_name : {properties = {correct = {analyzer=trigrams, type=text}}}]",
"caused_by" : {
"type" : "mapper_parsing_exception",
"reason" : "Root mapping definition has unsupported parameters: [true_name : {properties = {correct = {analyzer=trigrams, type=text}}}]"
}
},
"status" : 400
}
Типы сопоставления устарели. Обратитесь к этой документации, чтобы узнать больше об удалении типов сопоставления.
Индексы, созданные в Elasticsearch 6.0.0 или более поздней версии, могут содержать только единый тип отображения. Индексы, созданные в версии 5.x с множественным отображением типы будут продолжать работать, как и раньше, в Elasticsearch 6.x. Типы будет объявлен устаревшим в API в Elasticsearch 7.0.0 и полностью удалено в 8.0.0.
{
"settings": {
"analysis": {
"analyzer": {
"trigrams": {
"tokenizer": "trigram_tokenizer",
"filter": [
"lowercase"
]
}
},
"tokenizer": {
"trigram_tokenizer": {
"type": "ngram",
"min_ngram": 3,
"max_ngram": 3,
"token_chars": []
}
}
}
},
"mappings": { // note this
"properties": {
"correct": {
"type": "text",
"analyzer": "trigrams"
}
}
}
}
Если ваш документ JSON выглядит так:
{
"true_name": {
"correct": "mapping types deprecated"
}
}
Тогда отображение индекса будет -
{
"settings": {
"analysis": {
"analyzer": {
"trigrams": {
"tokenizer": "trigram_tokenizer",
"filter": [
"lowercase"
]
}
},
"tokenizer": {
"trigram_tokenizer": {
"type": "ngram",
"min_ngram": 3,
"max_ngram": 3,
"token_chars": []
}
}
}
},
"mappings": {
"properties": { // note this
"true_name": {
"properties": {
"correct": {
"type": "text",
"analyzer": "trigrams"
}
}
}
}
}
}