Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 119 Vote(s) - 3.55 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Elasticsearch relationship mappings (one to one and one to many)

#1
In my elastic search server I have one index `http://localhost:9200/blog`.
The (blog) index contains multiple types.

e.g.: `http://localhost:9200/blog/posts`, `http://localhost:9200/blog/tags`.

In the tags type I have created more than 1000 tags and 10 posts created in posts type.

e.g.: posts

{
"_index":"blog",
"_type":"posts",
"_id":"1",
"_version":3,
"found":true,
"_source" : {
"catalogId" : "1",
"name" : "cricket",
"url" : "http://www.wikipedia/cricket"
}
}

e.g.: tags

{
"_index":"blog",
"_type":"tags",
"_id":"1",
"_version":3,
"found":true,
"_source" : {
"tagId" : "1",
"name" : "game"
}
}

I want to assign the existing tag to blog posts (i.e. relationship => mapping).

How do I assign the tags to posts mapping?
Reply

#2
There are 4 approaches that you can use within Elasticsearch for managing relationships. They are very well outlined in the Elasticsearch blog post - [Managing Relations Inside Elasticsearch][1] I would recommend reading the entire article to get more details on each approach and then select that approach that best meets your business needs while remaining technically appropriate.

Here are the highlights for the 4 approaches.

> **Inner Object**
>
> - Easy, fast, performant
> - Only applicable when one-to-one relationships are maintained
> - No need for special queries
>
> **Nested**
>
> - Nested docs are stored in the same Lucene block as each other, which helps read/query performance. Reading a nested doc is faster than the equivalent parent/child.
> - Updating a single field in a nested document (parent or nested children) forces ES to reindex the entire nested document. This can be very expensive for large nested docs
> - “Cross referencing” nested documents is impossible
> - Best suited for data that does not change frequently
>
> **Parent/Child**
>
> - Children are stored separately from the parent, but are routed to the same shard. So parent/children are slightly less performance on read/query than nested
> - Parent/child mappings have a bit extra memory overhead, since ES maintains a “join” list in memory
> - Updating a child doc does not affect the parent or any other children, which can potentially save a lot of indexing on large docs
> - Sorting/scoring can be difficult with Parent/Child since the Has Child/Has Parent operations can be opaque at times
>
> **Denormalization**
>
> - You get to manage all the relations yourself!
> - Most flexible, most administrative overhead
> - May be more or less performant depending on your setup


[1]:

[To see links please register here]

Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through