#elasticsearch #kibana
#elasticsearch #kibana
Вопрос:
У меня есть индекс ES, аналогичный приведенному ниже отображению
"mappings": {
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text"
},
"age": {
"type": "integer"
},
"note": {
"type : text "
}
в note
поле у меня много значений на арабском и много значений на английском и других языках..
как я могу получить только арабские значения
Примечание: у меня много миллионов документов
Комментарии:
1. Если вы использовали одно и то же поле для индексации, все lang. содержимое, которого невозможно достичь, вам нужно проиндексировать в поле, специфичном для языка, с помощью соответствующего анализатора (для улучшения результатов поиска). пожалуйста, обратитесь к моему ответу для получения более подробной информации
Ответ №1:
Вы можете использовать несколько полей с анализатором для реализации многоязычного поиска
{
"mappings": {
"properties": {
"title": {
"type": "text",
"fields": {
"en": {
"type": "text",
"analyzer": "english"
},
"ar": {
"type": "text",
"analyzer": "arabic"
}
}
}
}
}
}
Обратитесь к блогу medium о многоязычном поиске с помощью Elasticsearch
Комментарии:
1. сопоставление уже построено, я хочу просто search API, потому что у меня много миллионов документов в этом индексе, и я не хочу его терять
2. @MajdAlDeenm, да, но, к сожалению, как упоминалось в моем комментарии в вопросе, это невозможно, если вы уже смешали все языковые документы в одном поле. у вас нет другого варианта, кроме переиндексации с правильным отображением
3. @MajdAlDeen, вы можете использовать elastic.co/guide/en/elasticsearch/reference/current /… для переиндексации и использования elastic.co/guide/en/elasticsearch/reference/current / … вы можете сделать это с нулевым временем простоя
4. ценю вашу любезную помощь, я попробую. я надеялся, что найду способ намного проще 🙂
5. @MajdAlDeen, спасибо за ваше обновление, я реализовал это и проделал большую работу в мукти-лингвальном поиске, и до сих пор это лучшее, что я знаю, которое поддерживается в последней версии, но, пожалуйста, дайте мне знать, если вы найдете лучший способ 🙂