栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在ElasticSearch中``联接''两个索引

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在ElasticSearch中``联接''两个索引

正如您在其他问题中回答的那样,没有什么可以阻止您在建立索引时将

Customer
名称存储在每个
order_item
文档中,同时仍然具有
orders
包含
Customer
数据的专用索引。请记住,这都是关于巧妙地对数据进行规范化,以便每个文档都可以根据需要实现“自包含”。

curl -XPUT localhost:9200/order_items/order_item/1 -d '{    "ID": 1,    "Name": "Shoes",    "Price": 9.99,    "OrderID": 82,    "Customer": "John Smith"}'curl -XPUT localhost:9200/order_items/order_item/2 -d '{    "ID": 2,    "Name": "Hat",    "Price": 19.99,    "OrderID": 82,    "Customer": "John Smith"}

该解决方案的优点是每个订单商品都是完全独立的,您可以对其进行分组/汇总

OrderID
以获取给定订单的所有商品。

另外,正如@JohnAment在他的评论中提到的,

order/order_item
用例也是使用以下任一方法的理想选择

  1. 在父/子关系
  2. 或嵌套的对象。

在第一种情况下,您将有一个

order
“父”文档…

curl -XPUT localhost:9200/orders/order/82 -d '{    "ID": 82,    "Customer": "John Smith"}'

还有几个

order_item
您使用其父ID编制索引的“子”文档:

curl -XPUT localhost:9200/order_items/order_item/1?parent=82 -d '{     "ID": 1,     "Name": "Shoes",     "Price": 9.99}'curl -XPUT localhost:9200/order_items/order_item/2?parent=82 -d '{     "ID": 2,     "Name": "Hat",     "Price": 19.99}'

在第二种情况下,您的

order
文档将在嵌套
OrderItems
属性中包含所有订单商品,并且看起来像这样:

curl -XPUT localhost:9200/orders/order/82 -d '{    "ID": 82,    "Customer": "John Smith"    "OrderItems": [      {        "ID": 1,        "Name": "Shoes",        "Price": 9.99      },{        "ID": 2,        "Name": "Hat",        "Price": 19.99      }    ]}'


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/388197.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号