我正在使用https://github.com/firebase/flashlight索引搜索数据
然而,今天早上我删除了整个firebase索引,所以它应该是空的(这在以前有效,但似乎在某些情况下nodejs app.js崩溃,导致缓存“卡住”),但我仍然以某种方式看到来自我的nodejs app的旧搜索结果...
我试过了:
http://localhost:9200/_cache/clear
和
http://localhost:9200/_flush
http://localhost:9200/firebase/_flush
他们都说成功,但我仍然得到old results
,似乎无处可去。
我还可以在控制台中看到它每60秒刷新一次,删除整个firebase之前没有问题......
我甚至在控制台中看到了一条消息housekeeping: found 60 orphans (removing them now)
,所以现在应该刷新它...
我尝试重新启动elasticsearch以及整个Linux / Debian服务器......
在config.js中我有两个索引:
exports.paths = [
{
path: "tags",
index: "firebase",
type: "tag",
filter: function(data) { return data.name !== 'system'; }
},
{
path: "tracks",
index: "firebase",
type: "track",
filter: function(data) { return data.name !== 'system'; }
}
];
奇怪的是,使用'track'商店时没有任何问题,而不是使用'tag'商店...
我在这里缺少什么?
//更新!
所以,我刚刚删除了firebase tracks
索引,而nodejs脚本正在运行而脚本crashed
...同样的问题,不同的索引。那么crashing script must cause it
......那么,我该如何clear this stuck cache
?
答案 0 :(得分:1)
所以我通过简单地解决了这个问题:
curl -XDELETE localhost:9200/Firebase
感谢:https://github.com/elasticsearch/elasticsearch/issues/7541#issuecomment-54724302
我猜测弹性搜索不知道(并且没有被告知)其当前索引的相关性,也许我使用的Flashlight脚本没有通知它索引应该是什么?但是,因为只有在突然删除整个firebase索引时节点脚本崩溃时才需要这个,所以它应该以某种方式捕获,但我很高兴我至少可以像这样修复它。重建索引现在不是一个大问题/任务,但将来它可能是。
答案 1 :(得分:0)
一个疯狂的猜测,也许你没有正确发布查询。你说你试过以下链接:
http://localhost:9200/_cache/clear
http://localhost:9200/_flush
http://localhost:9200/firebase/_flush
如果您从浏览器访问网址,则无法清除它们。你必须发布它们。如果你这样做,你的问题很模糊,GET和POST都返回相同的结果(显示总数,成功和失败)。使用curl从命令行尝试这个:
curl -XPOST 'http://localhost:9200/_cache/clear'
curl -XPOST 'http://localhost:9200/_flush'
或者使用JQuery创建AJAX请求或使用fiddler。
答案 2 :(得分:0)
尝试通过向弹性搜索服务器发送以下POST请求来优化索引:
curl -XPOST 'http://localhost:9200/_optimize?max_num_segments=1&wait_for_merge=true'
它使lucene真正从磁盘中删除已删除的文档并合并索引。