Squeak.ru - шаблоны программирования

ACID-обновление документа ElasticSearch

Я пытаюсь создать систему, подобную Tinder, прямо сейчас. Здесь мне нужно знать, какие карты уже были просмотрены.

Если я сохраню карточки в ElasticSearch, а потом такой документ:

{ имя: Дэвид, местоположение: {широта, долгота}, seeFromUsers: [] }

Мне просто интересно, есть ли смысл создавать список в самом объекте. Вероятно, в нем 2000 записей. Но если я делаю обновление в ElasticSearch, то мне всегда приходится проходить все 2000 записей. Если два пользователя делают это одновременно, не потеряется ли один из них? Как я могу просто добавить еще один идентификатор в массив? Это вообще возможно?

Какие еще есть решения?

28.05.2019

  • этот ответ должен помочь: «Скрипт частичного обновления эластичного поиска очищает массив и заменяет его новыми значениями»> stackoverflow.com/questions/40824645/ (Подсказка: обновление по сценарию) 28.05.2019
  • имейте в виду, что elasticsearch не совместим с кислотой по дизайну - elastic.co/guide/en/elasticsearch/guide/current/ 28.05.2019

Ответы:


1

Еще одно решение было бы совершенно другим подходом. Вместо этого при создании таких документов

{
  "name": "David",
  "location": { "lat": ..., "lon": ...},
  "seenFromUsers": ["Laura", "Simone"]
}

подумайте об отношениях так:

{
  "name": "David",
  "seenBy": "Laura"
}

{
  "name": "David",
  "seenBy": "Simone"
}

этот подход даст вам более простые запросы, и проблема ACID будет решена. Новые просмотры профиля — это просто новые документы...

В качестве преимущества вы избавитесь от внутренних объектов, и вам будет проще добавлять дополнительные данные в это отношение:

{
  "name": "David",
  "seenBy": "Laura",
  "timestamp": ...,
  "liked": true
}

{
  "name": "David",
  "seenBy": "Simone",
  "timestamp": ...,
  "liked": false
}

И теперь вы сможете сделать простой запрос для всех положительных лайков профиля или двунаправленных лайков/совпадений...

29.05.2019
  • Но как можно связать эти две таблицы, чем в ElasticSearch? естьребенок? Можете ли вы объяснить это подробнее? 29.05.2019
  • Думаю, проблема с кислотой решена элегантно. Вам следует поднять еще один вопрос, чтобы обсудить его, не путая этот вопрос с другими аспектами вашей заявки, и сохранить заголовок/вопрос/ответ нетронутыми. Я найду новый вопрос. Пожалуйста, сообщите нам как можно больше подробностей. Ваше здоровье! 29.05.2019
  • stackoverflow.com/questions/56430019/ 03.06.2019
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...