проиндексировать новый документ и получить проиндексированный документ в том же запросе - PullRequest
0 голосов
/ 10 апреля 2020

можно проиндексировать новый документ и вернуть его после того, как он успешно проиндексировал?

Я пытался взять возвращаемый _id, но я использую 2 запроса, и действие индекса занимает некоторое время, а второе запрос не находит _id, поэтому он не всегда делает это идеально.

это запрос, который индексирует документ:

const query = await elsaticClient.index({
routing: "dasdsad34_d",
index: "milan",
body: {
  text: "san siro",
  user: {
    user_id: "3",
    username: "maldini",
  },
  tags: ["Forza Milan","grande milan"],
  publish_date: new Date(),
  likes: [],
  users_tags: [1,5],
  type: {
    name: "comment",
    parent: "dasdsad34_d",
  },
},

});

1 Ответ

0 голосов
/ 10 апреля 2020

Нет, это невозможно при поведении по умолчанию. По умолчанию Elasticsearch имеет поддержку почти в реальном времени. Интервал refre sh по умолчанию равен 1 секунде, так как refre sh индекса считается дорогостоящей операцией.

Чтобы преодолеть это, в своей операции индексирования вы можете добавить refresh = true . Вы можете получить более подробную информацию по ссылкам ниже.

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html

Обратите внимание, что это НЕ рекомендуется опция, поскольку это идет с огромными накладными расходами. Используйте это, только если ваши вставки в данный индекс имеют очень очень низкое число.

Рекомендуется использовать refresh = wait_for в операции индексирования. Но у этого есть обратная сторона - ожидание секунды для завершения естественного refre sh. Таким образом, если у вас по умолчанию установлен интервал refre sh, равный 1, и вы согласны с этим в качестве приемлемого компромисса, то это путь к go.

Однако, если установлен более высокий интервал refre sh, тогда время ожидания операции индексирования будет таким же, как и интервал refre sh. Поэтому тщательно выбирайте свой вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...