Обработка часто обновляемых геоданных в Elasti c Поиск - PullRequest
0 голосов
/ 25 марта 2020

Данные о местоположении (географических точках) обновляются каждые 5 минут для миллионов пользователей. Мы должны искать пользователей с указанными c атрибутами (возраст / интересы / языки) и, в частности, географическим диапазоном. Хотелось понять правильную стратегию хранения таких данных в Elasti c.

Option1

Создать документ пользователя со следующими ключами

  • Метаданные и атрибуты пользователя (age , интересы, языки, зарплата и т. д. c около 8-10 доступных для поиска атрибутов)
  • Текущее местоположение (меняется каждые несколько минут)
"liveLocation" : {
"type" : "Point",
"coordinates" : [-72.333077, 30.856567]
}
  • данные о местоположении - несколько адреса - домашний адрес, рабочий адрес и т. д. c вместе с географическими точками. (обновляется не часто) -
"addresses" :
 [
    {
        "type" : "home",
        "address" : "first floor, xyz, near landmark",
        "city" : "Newyork",
        "country" : "Country", 
        "zipcode" : "US1029", 
        "location" : {
            "type" : "Point",
            "coordinates" : [-73.856077, 40.848447]
    },
    {
     ... more atype of addresses
    }
 ] 

Мы хотим выполнить поисковые запросы гео по всем полям типа гео. Мое беспокойство - живое местоположение для пользователей будет обновляться довольно часто. Это жизнеспособный подход?

Option2

  • Рассматривать каждое обновление местоположения как данные временного ряда и вставлять новый документ. Это позволит избежать обновления документов. вместо этого будет вставлять новые документы для каждого пользователя каждые несколько минут.

Проблемы -

  • При поиске всех пользователей (дома / в офисе / в прямом эфире) в определенном географическом диапазоне я должен учитывать только последние обновленные документы для каждого пользователя . Как это сделать в elasti c?

  • Мы должны искать пользователей с указанными c атрибутами (возраст / интересы / язык) и в частности географическим диапазоном. Если опция 2 предпочтительна, должны ли пользовательские атрибуты-метаданные и обновления местоположения рассматриваться как отношения родитель-ребенок или как-то иначе?

  • В заключение - Какой должен быть правильный подход.

...