AFAIK 你永远不会从添加或提交中获得 UUID。当您执行添加或提交时,更新请求处理程序会返回查询时间和状态,但不会提供太多其他信息(假设它是成功的)。您实际上可以通过运行手动添加/提交来查看 HTTP 响应中的内容,如下所示:
http://localhost:8983/solr/update?stream.body=<add><doc><field name="id">test</field><field name="title">test title</field></doc></add>
http://localhost:8983/solr/update?stream.body=<commit/>
如果您在 Web 浏览器中运行这些查询,它们将分别提交一个测试文档并提交它。然后,您将能够看到 SolrJ 可用的信息(不多)。
您可以用 Java 编写自己的(修改过的)更新处理程序,但这似乎需要大量工作。您还可以在 Solr 架构中启用“时间戳”字段,以便您可以按上次修改日期查询 solr 并找到您刚刚提交的项目。
不过,这两种方法都将是主要的黑客攻击。最好的办法是在将文档提交给 Solr 之前为其确定一个唯一 ID,然后使用该唯一 ID 来检索它们。使用生成的 UUID 更像是一种“一劳永逸”的方法。由于您不想忘记,因此您需要生成自己的 UUID。
由于您使用的是 Java,因此使用UUID应该非常简单,使用如下代码:
CommonsHttpSolrServer server = new CommonsHttpSolrServer(MY_SERVER_URL);
SolrInputDocument doc = new SolrInputDocument();
UUID uuid = UUID.randomUUID();
doc.addField("id", uuid.toString());
// [...] multiple addField calls
server.add(doc);
UpdateResponse ur = server.commit();