Как я могу получить значение из поля в зависимости от языка в elasticsearch

#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, спасибо за ваше обновление, я реализовал это и проделал большую работу в мукти-лингвальном поиске, и до сих пор это лучшее, что я знаю, которое поддерживается в последней версии, но, пожалуйста, дайте мне знать, если вы найдете лучший способ 🙂