#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 документов.