On 3/22/23 12:22, Cesar Delgado wrote:
<field name="created_at" type="date" indexed="true" required="true" stored="false"
docValues="true"/>
<field name="edited_at" type="date" indexed="true" required="false" stored="false"
docValues="true"/>
<dynamicField name="*_count" type="long" indexed="true" stored="false"
docValues="true"/>
Some of the documents might be modified and what I’d like to do is replace the
document in the index IF any of the *_count values are greater than what is in
Solr already or if the edited_at value is greater than the created_at or
greater than the previous edited_at value. At the moment what I’m doing is
inserting a document with _version_ = -1 and if I get an error then I get the
document, do the checks I’ve explained in the application, and reindex if I
need to. I’m curious to know if this is something I can push down to Solr?
Doing 2 searches and 2 PUTs per document that is modified seems a bit excessive.
I do not know of anything built into Solr to do that.
Any capability like this that we might implement would be almost as slow
as doing it yourself ... there would be no great advantage other than
ease of use. There are a lot of things that are simply better to do
client-side.
Why are you doing two queries and two puts? The best way to handle this
(imho) would be: Ask for an existing entry using the uniqueKey value
with the /get handler and then decide at that point whether you're going
to even do the indexing. One step if the document exists and is later
than the proposed change, two steps if it does not exist or the existing
document is older.
Thanks,
Shawn