我试图从Elasticsearch删除特定的日期记录.我的查询如下:
curl -XDELETE 'http://localhost:9200/twitter/twit/_query' -d '
{
"filter" : {
"range" : {
"date_time" : { "from" : "2012-10-01 00:00:01", "to" : "2013-05-01 11:59:59"}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
但它没有删除任何记录.所以它是正确的或有一些其他方法来删除记录.
在elasticsearch中滚动时,重要的是在每个滚动中提供最新的内容scroll_id:
初始搜索请求和每个后续滚动请求将返回一个新的scroll_id?—仅应使用最新的scroll_id。
以下示例(取自此处)使我感到困惑。首先,滚动初始化:
rs = es.search(index=['tweets-2014-04-12','tweets-2014-04-13'],
scroll='10s',
search_type='scan',
size=100,
preference='_primary_first',
body={
"fields" : ["created_at", "entities.urls.expanded_url", "user.id_str"],
"query" : {
"wildcard" : { "entities.urls.expanded_url" : "*.ru" }
}
}
)
sid = rs['_scroll_id']
Run Code Online (Sandbox Code Playgroud)
然后循环:
tweets = [] while (1):
try:
rs = es.scroll(scroll_id=sid, scroll='10s')
tweets += rs['hits']['hits']
except:
break
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是我看不到sid更新的地方。我相信它是在python客户端内部发生的。但我不明白它是如何工作的...