# クエリの子の中からの親のデータの参照について

**URL:** https://discuss.elastic.co/t/topic/152773
**Category:** 日本語による質問・議論はこちら
**Created:** [October 17, 2018, 8:00am UTC](https://discuss.elastic.co/t/topic/152773 "2018-10-17T08:00:38Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![e5da94b0de01a92c429f](https://avatars.discourse-cdn.com/v4/letter/e/ecccb3/32.png) [@e5da94b0de01a92c429f](https://discuss.elastic.co/u/e5da94b0de01a92c429f)
#### Post date: [October 17, 2018, 8:00am UTC](https://discuss.elastic.co/t/topic/152773/1 "2018-10-17T08:00:39Z")

</div>

お世話になります。質問させてください。

has\_childの中で親のデータを参照した計算をしたいと考えています。

has\_childの中からhas\_parentをすると重たくなる印象があります。  
多くのフィールドを参照したいのですが、stored fieldはやりすぎない方がいい印象があります。  
script fieldなど動的なフィールドをhas\_child内部から参照させるのもできないのかなと感じています。  
painlessで参照できる方法があればいいなと思ったのですがうまくいきませんでした。

上記以外の良い方法や、上記でもうまくいく可能性があるというような助言をいただければ幸いです。

よろしくお願いいたします。

---

<div class="post-metadata">

### Author: ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)
#### Post date: [October 17, 2018, 8:25am UTC](https://discuss.elastic.co/t/topic/152773/2 "2018-10-17T08:25:09Z")

</div>

どれぐらいのフィールド数があるか、データの更新パターンや全体のボリュームも分からないので何の確証もありませんが、  
私なら、子データの中に、必要となる親のデータも子のフィールドに入れておきたくなります。  
それで、実運用に耐えるかどうかを検証するアプローチをとります。

DBのような正規化じゃないアプローチの方が、シンプルにできると思っています。

私も他の人のご意見を聞きたいです。

---

<div class="post-metadata">

### Author: ![e5da94b0de01a92c429f](https://avatars.discourse-cdn.com/v4/letter/e/ecccb3/32.png) [@e5da94b0de01a92c429f](https://discuss.elastic.co/u/e5da94b0de01a92c429f)
#### Post date: [October 17, 2018, 8:36am UTC](https://discuss.elastic.co/t/topic/152773/3 "2018-10-17T08:36:58Z")

</div>

早速のご回答ありがとうございます！参考にします。

---

<div class="post-metadata">

### Author: ![Nao\_Mk2](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nao_mk2/32/26832_2.png) [@Nao\_Mk2](https://discuss.elastic.co/u/Nao_Mk2)
#### Post date: [October 17, 2018, 1:43pm UTC](https://discuss.elastic.co/t/topic/152773/4 "2018-10-17T13:43:12Z")

</div>

こんにちは

私もtsgkdtさんと同じく、必要となる親のフィールドを子の方にも持たせるのが良いかなと思います。

RDBとは違いElasticsearchは正規化された構成にするよりも必要な分だけ非正規化して利用する方が得意だと思いますし、よりシンプルに使えるかなと思います。

---

<div class="post-metadata">

### Author: ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)
#### Post date: [October 17, 2018, 3:10pm UTC](https://discuss.elastic.co/t/topic/152773/5 "2018-10-17T15:10:48Z")

</div>

ちょうど昨日開催のElasticsearch勉強会で親子データを取り扱っていた事例の発表がありましたので、  
スピーカーの方に質問してみました。

- 子でも必要な親の情報はそれぞれ持っている（非正規化）
- その結果、子の方のフィールド数は1000ぐらい（でも実用に耐えているとのこと）

こちらのスライドも紹介されていました。非正規化のアプローチが書かれています。

> **[Integrate full text search service with Django](https://slideship.com/users/@iktakahiro/presentations/2018/09/DRJxjKfBFEGSRcvYjCA88f/?p=32)**
>
> PyCon 2018 の登壇資料です
> 
> 本セッションでは、全文検索システムである Elasticsearch をプロダクトに導入するうえでの課題やプラクティスについて発表します

ご参考になれば幸いです。

---

<div class="post-metadata">

### Author: ![e5da94b0de01a92c429f](https://avatars.discourse-cdn.com/v4/letter/e/ecccb3/32.png) [@e5da94b0de01a92c429f](https://discuss.elastic.co/u/e5da94b0de01a92c429f)
#### Post date: [October 18, 2018, 12:46am UTC](https://discuss.elastic.co/t/topic/152773/6 "2018-10-18T00:46:50Z")

</div>

ご回答ありがとうございます。  
tsgkdtさんに続き、非正規化での利用についてのご意見、助かります。  
参考にさせていただきます。

---

<div class="post-metadata">

### Author: ![e5da94b0de01a92c429f](https://avatars.discourse-cdn.com/v4/letter/e/ecccb3/32.png) [@e5da94b0de01a92c429f](https://discuss.elastic.co/u/e5da94b0de01a92c429f)
#### Post date: [October 18, 2018, 12:51am UTC](https://discuss.elastic.co/t/topic/152773/7 "2018-10-18T00:51:25Z")

</div>

> [@tsgkdt](#):
>
> こちらのスライドも紹介されていました。非正規化のアプローチが書かれています。

スライドも閲覧させてもらいました。勉強になります。  
DBと即時の同期を取っている事例ですね。  
データサイズと親に変更があった時に子を全て更新することになることに注意とのこと参考になります。

---

<div class="post-metadata">

### Author: ![johtani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/johtani/32/44956_2.png) [@johtani](https://discuss.elastic.co/u/johtani)
#### Post date: [October 22, 2018, 7:07am UTC](https://discuss.elastic.co/t/topic/152773/8 "2018-10-22T07:07:58Z")

</div>

あとは、古いですが、このあたりのドキュメントが考え方としては参考になるかと。  
[https://www.elastic.co/guide/en/elasticsearch/guide/current/relations.html](https://www.elastic.co/guide/en/elasticsearch/guide/current/relations.html)

2.xベースで記述されているので、クエリやマッピングについては最新版のリファレンスと合わせて読んでいただくのをお勧めします。

---

<div class="post-metadata">

### Author: ![e5da94b0de01a92c429f](https://avatars.discourse-cdn.com/v4/letter/e/ecccb3/32.png) [@e5da94b0de01a92c429f](https://discuss.elastic.co/u/e5da94b0de01a92c429f)
#### Post date: [October 22, 2018, 7:29am UTC](https://discuss.elastic.co/t/topic/152773/9 "2018-10-22T07:29:11Z")

</div>

ありがとうございます。  
フラットな特性をベースにしつつリレーショナルな対応をしているということを思い出しつつ検討します。  
前述のアドバイスの非正規化についても、どのような考え方で取り入れるかの参考になります。

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [November 19, 2018, 7:36am UTC](https://discuss.elastic.co/t/topic/152773/10 "2018-11-19T07:36:47Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
