Sure, I want the exact same behavior as the missing filter, but in a native script. This is just a part of a much larger script I have.
On Mon, Mar 24, 2014 at 11:41 AM, Itamar Syn-Hershko <[email protected]>wrote: > The internals aren't really documented. > > But what are you trying to do? are you familiar with Missing Filter? > http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-missing-filter.html > > -- > > Itamar Syn-Hershko > http://code972.com | @synhershko <https://twitter.com/synhershko> > Freelance Developer & Consultant > Author of RavenDB in Action <http://manning.com/synhershko/> > > > On Mon, Mar 24, 2014 at 11:36 AM, Meidan <[email protected]> wrote: > >> I have created native script that checks if a specific field (mapped to >> type long) in the document is empty, using three different options below, >> the two first options sometime return false. >> Is there a documentation on the semantics of each option? >> >> From what I see, the first two options use >> PackedArrayIndexFieldData.loadDirect(AtomicReaderContext context) which >> gets the terms from a Lucene reader (lucene.index.SegmentReader) and since >> they're not null, the field value isn't considered empty. >> >> I'm using ElasticSearch 0.90.5 and java 1.7u17. >> >> public class MapScript extends AbstractSearchScript { >> @Override >> public Object run() { >> if (!doc().containsKey("field2")) //sometime false >> return new Object(); >> >> if (doc().get("field2") == ScriptDocValues.EMPTY) //sometime false >> return new Object(); >> >> ScriptDocValues value = (ScriptDocValues) doc().get("field2"); >> if (value.isEmpty()) //always true >> return new Object(); >> >> return new Object(); >> } >> } >> >> Here's the data for this script: >> curl -XPOST localhost:9200/documents/ -d '{ "mappings" : { "type1" : >> { "properties" : { "field1" : { "type" : "long" } >> } }}}' >> curl -XPUT localhost:9200/documents/type1/1 -d '{ "field1" : 7 }' >> curl -XPUT localhost:9200/documents/type1/_mapping -d '{ "type1" : >> { "properties" : { "field2" : {"type" : "long"} >> } }}' >> curl -XPUT localhost:9200/documents/type1/2 -d '{ "field1" : 77 }' >> curl -XPUT localhost:9200/documents/type1/3 -d '{ "field1" : 3, "field2" >> : 33 }' >> >> -- >> You received this message because you are subscribed to the Google Groups >> "elasticsearch" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elasticsearch/5f77fa65-9f40-4bb2-98ac-9834e7362eb0%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/5f77fa65-9f40-4bb2-98ac-9834e7362eb0%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "elasticsearch" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/elasticsearch/gSlS02Dw2ss/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elasticsearch/CAHTr4ZsjJW5x1C-BwatL1ETOn%2Bf5HJ8%3DBM1MM6kt2AKQnQSj8w%40mail.gmail.com<https://groups.google.com/d/msgid/elasticsearch/CAHTr4ZsjJW5x1C-BwatL1ETOn%2Bf5HJ8%3DBM1MM6kt2AKQnQSj8w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Meidan. -- You received this message because you are subscribed to the Google Groups "elasticsearch" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAHHFEKny4AkKqAjmg97sc%3DLBxdFwk5N3jbviSTkHLOV%3DLE1Emw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
