I am new to ES – so, please bear with me.
My data model is parent-child relationship. The parent document contains attributes of people. The child document contains time and location for that person. In a relational model, it would look like: Create Table Parent ( personId int, personName varchar); Create table child ( personId Int, Location varchar, detectionTime dateTime); A possible query on this model is: "A person named X that was spotted at location A, and then, within 10 minutes, was spotted at location B" In SQL, it would look like: "select personId, C1.detectionTime >From person, child as C1, child as C2 Where Parent.personId = C1.personId, Parent.personId = C2.personId, C1.location = A, C2.location = B, personName = X, C2.detectionTime between C1.detectionTime and C1.detectionTime + 10 (minutes);" The "between" part of the query is the problem. No retrieval system that I am aware of can do it. I guess the way to ask it is to request a parent document with name=X, that has child document\s with location A, and child document\s with location B. Once the parent and child documents are retrieved – the requesting program will filter the results that do not match the "within 10 minutes" condition. This solution is far from optimal: 1. Wasted bandwidth in returning documents that will be filtered out. 2. Wasted computation on ranking and sorting those documents 3. Invalidates facets I there a way do the filtering at the shard level? (Even if it requires programming) -- 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 elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/0eee6b66-c5b4-41d0-9eb7-c5b99d272988%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.