I've been trying to figure out how I can index a graph data structure using 
ElasticSearch and could really use some advice from someone more 
knowledgeable than me. First, let me explain the challenge. The graph model 
has individual access controls at the vertex (node), edge (relationship), 
and property level. I'd like my users to be able to search the graph for 
vertices or edges containing matching properties, with two caveats:

   1. They should not get vertex or edge results they don't have permission 
   to see.
   2. Properties a user does not have access to see should not be evaluated 
   in the query.

My first thought was to index properties as either nested or child 
documents of a vertex/edge and use a custom filter to remove properties a 
user didn't have access to. The first problem I run into is when I try a 
boolean query across properties. For example, assume I want to query a 
person vertex by first name and date of birth. Since these properties are 
indexed as separate documents there is never a match. 

What I essentially need is the ability to query across nested or child 
documents and return the parent only when there are matches across the 
child documents. For example, assume a parent vertex with one property 
document called "full_name" set to Barak Obama and another property 
document named "political_party" set to Democrat. Is there any way for me 
to query for the parent document of these two properties by asking for one 
property with full_name="Barak Obama" and another property with 
political_party="Democrat"?

-- 
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/a8beee5b-82d0-45fa-8666-31e956c03439%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to