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:
- They should not get vertex or edge results they don't have permission
- 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
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 firstname.lastname@example.org.
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.