<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Custom indexer: deleteDocument() doesn't delete objects from index</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=118535246" />
  <subtitle>Custom indexer: deleteDocument() doesn't delete objects from index</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=118535246</id>
  <updated>2026-04-07T12:10:38Z</updated>
  <dc:date>2026-04-07T12:10:38Z</dc:date>
  <entry>
    <title>RE: Custom indexer: deleteDocument() doesn't delete objects from index</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118577912" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118577912</id>
    <updated>2020-02-24T16:27:03Z</updated>
    <published>2020-02-24T16:27:03Z</published>
    <summary type="html">I refactored method so I am not interested if object exists in ES any more.</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2020-02-24T16:27:03Z</dc:date>
  </entry>
  <entry>
    <title>RE: Custom indexer: deleteDocument() doesn't delete objects from index</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118566394" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118566394</id>
    <updated>2020-02-21T11:32:31Z</updated>
    <published>2020-02-21T11:32:31Z</published>
    <summary type="html">Silly me, using method  getDocument(webHelpDocument) I incorrectly assumed it returns indexed object from ES, but it actually builds the object on the fly from the passed object.&lt;br /&gt;Is there any efficient way to check if indexed object exists in ES?</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2020-02-21T11:32:31Z</dc:date>
  </entry>
  <entry>
    <title>RE: Custom indexer: deleteDocument() doesn't delete objects from index</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118562970" />
    <author>
      <name>Amos Fong</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118562970</id>
    <updated>2020-02-20T23:20:15Z</updated>
    <published>2020-02-20T23:20:15Z</published>
    <summary type="html">I think you should be deleting by uuidOrig (It&amp;#39;s not clear whether it&amp;#39;s the same or different than uuidGenerated though). Looks like you&amp;#39;re extending BaseIndexer, is that right? How did you implement the doGetDocument? Are you indexing the companyId field in your document?Also, I would try checking ES directly to see if you got the companyId and uid correct. If it&amp;#39;s embedded, try checking this URL:&lt;br /&gt;&lt;a href="http://localhost:9200/liferay-20101/_search?q=com.liferay.osb.koroneiki.trunk.model.ProductConsumption_PORTLET_743687"&gt;http://localhost:9200/liferay-[companyId]/_search?q=[&lt;/a&gt;uid]</summary>
    <dc:creator>Amos Fong</dc:creator>
    <dc:date>2020-02-20T23:20:15Z</dc:date>
  </entry>
  <entry>
    <title>Custom indexer: deleteDocument() doesn't delete objects from index</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118535245" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118535245</id>
    <updated>2020-02-18T14:57:17Z</updated>
    <published>2020-02-18T14:57:17Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Any idea why deleteDocument() method keeps my objects in the index? There is no error thrown. It is not removed even after some period.&lt;br&gt;This method is invoked when reindexing my objects, e.g. from Control Panel | Search. My goal is to remove entries matching specific conditions. If conditions are met, doDelete() is invoked.&amp;nbsp; However, when calling getDocument(webHelpDocument) after this step, I'd expect null result.&lt;br&gt;I've tried also IndexWriterHelperUtil.deleteDocument() method, but I am getting same result.&lt;br&gt;LR 7.2.0 GA1&lt;br&gt;&lt;pre&gt;&lt;code&gt;@Override
protected void doReindex(String[] ids) throws Exception {
&amp;amp;nbsp;&amp;amp;nbsp; for (WebHelpDocument webHelpDocument : webHelpDocumentLocalService.getWebHelpDocuments(-1, -1)) {
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; if (condition) {
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; delete(webHelpDocument);
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; } else {
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; doReindex(webHelpDocument);
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&amp;amp;nbsp;&amp;amp;nbsp; }
}
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; protected void doDelete(WebHelpDocument webHelpDocument) throws Exception {
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Document documentOrig = getDocument(webHelpDocument);
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String uuidOrig = documentOrig.get(Field.UID);&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Document documentGenerated = new DocumentImpl();
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; documentGenerated.addUID(getClassName(), webHelpDocument.getDocumentId());
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String uuidGenerated = documentGenerated.get(Field.UID);&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; LOGGER.info(uuidOrig.equals(uuidGenerated));
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; LOGGER.info("before deleting: " + webHelpDocument.getDocumentId() + " " + uuidGenerated + " " + uuidOrig + " " + isCommitImmediately());&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; deleteDocument(webHelpDocument.getCompanyId(), webHelpDocument.getDocumentId());
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; LOGGER.info("after deleting (1): " + webHelpDocument.getDocumentId() + " " + (getDocument(webHelpDocument) != null));&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; IndexWriterHelperUtil.deleteDocument(getSearchEngineId(), webHelpDocument.getCompanyId(), uuidGenerated, true);&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; LOGGER.info("after deleting (2): " + webHelpDocument.getDocumentId() + " " + (getDocument(webHelpDocument) != null));
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&lt;/code&gt;&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2020-02-18T14:57:17Z</dc:date>
  </entry>
</feed>
