我在Solr版本4.4.0 中面临一个非常奇怪的行为
当我发送下面的url请求来索引两个文档时,它工作得很好,也就是说,它将索引消息写入各自的核心。因此,我们可以说commit运行良好。
http://localhost:8080/solr/test2m-enduser/dataimport?command=full-import&clean=false&commit=true&optimize=false
现在,当我为删除所有文档提供完全相同的url时,我看到了不同的行为。尽管它反映了solr控制台中删除查询的结果(即,所有文档都被删除)。但索引消息并没有提交到光盘,也就是说,我看不到"数据/索引"文件夹中任何文件的时间戳有任何新的变化。
现在,如果我发送以下url请求,它会将这个新索引写入"data/index"文件夹,即提交实际发生
http://localhost:8080/solr/test2m-enduser/update?commit=true
所以我很惊讶"dataimport…commit=true"one_answers"update…commit=true"之间的区别。在这两种情况下,最终调用的是什么。
由于上述行为,删除消息不会被复制到从属服务器。
我不明白这是软承诺还是硬承诺的问题。我该如何着手解决这个问题。任何输入或指针都会有所帮助。
如果您使用的是3.4之前的Solr版本,则如果您仅删除文档,则不会自动调用commit。从3.4及以后,提交总是基于url中commit
的值进行调用。