Elasticsearch — почему я не получаю те же результаты поиска после обновления документа?

#search #elasticsearch #lucene #elasticsearch-2.0

#Поиск #эластичный поиск #lucene #elasticsearch-2.0 #elasticsearch

Вопрос:

Вот что я делаю:

Сначала я выполняю поиск и получаю некоторые документы

 curl -XPOST index/type/_search
{
   "query" : {
      "match_all": {}
   },
   "size": 10
}
  

Затем я обновляю один из документов, которые привели к поиску

 curl -XPOST index/type/_id/_update
{
   "doc" : {
      "some_field" : "Some modification goes here."
   }
}
  

И, наконец, я выполняю точно такой же поиск, как указано выше.

Но самое любопытное, что я получаю все предыдущие документы, кроме обновленного. Почему его больше нет среди документов в поиске?

Спасибо!

Комментарии:

1. Вы можете получить его обратно, используя _id ? curl -XGET ‘ localhost:9200/index/type/_id

2. Что произойдет, если вы выполните обновление между операциями? elastic.co/guide/en/elasticsearch/reference/current /…

3. @jay да, я могу. но поле _id не меняется, если вы об этом думаете

4. @deathyr Я также выполнил вызов update со свойством refresh для true, результаты те же.

Ответ №1:

Поскольку вы не сортируете свои документы, они сортируются по количеству баллов. Возможно, ваше изменение изменило оценку документа, после чего документы сортируются по умолчанию.

И поскольку вы берете только первые 10 документов, у вас нет гарантии, что ваш новый документ вернется в эти 10 документов.