【问题标题】:elasticsearch - query between document typeselasticsearch - 文档类型之间的查询
【发布时间】:2018-06-21 03:40:15
【问题描述】:

我有一个生产订单文档类型

{
  part_number: "abc123",
  start_date: "2018-01-20"
},
{
  part_number: "1234",
  start_date: "2018-04-16"
}

我要创建商品单据类型 即

{
  part_number: "abc123",
  commodity: "1 meter machining"
},
{
  part_number: "1234",
  commodity: "small flat & form"
}

生产订单每周都存储在数据仓库中,并且是不可变的。

另一方面,商品可能会随着时间而变化。即 abc123 可以从 1 米加工变为 5 米加工,所以我不想将此数据与生产订单记录一起存储。

如果用户在商品文档类型中搜索"small flat & form",我想从生产订单文档类型中提取所有匹配的记录,匹配​​在零件号之间。

显然,我可以在带有连接的关系数据库中执行此操作。是否可以在 elasticsearch 中做同样的事情?

如果有帮助,我们有大约 50 万个零件号将被商品化,我们的生产订单数据仓库目前拥有 2000 万条记录。

【问题讨论】:

  • Elasticsearch 确实允许同一索引中的文档之间存在父子关系。这已经演变成不同的版本,最新的看起来像这样elastic.co/guide/en/elasticsearch/reference/current/…
  • 所以连接是可能的,并且根据您的 ES 版本,语义会有所不同,并且随着大小的增加往往会变慢。
  • 谢谢。看链接,我不明白这个过程。在 google 和 youtube 上搜索所有教程似乎都在 2 到 4 年之间,这表明开发人员正在避免使用连接。您知道使用当前语言版本的教程的链接吗?

标签: elasticsearch


【解决方案1】:

我发现您现在确实可以在 elasticsearch 中的索引之间进行查询,但是您必须确保您的数据存储正确。这是 6.3 elasticsearch 文档中的一个示例

Terms lookup twitter example 首先我们为信息建立索引 id 为 2 的用户,特别是其关注者,然后索引来自的推文 id 为 1 的用户。最后我们搜索所有匹配的推文 用户 2 的关注者。

PUT /users/user/2
{
    "followers" : ["1", "3"]
}

PUT /tweets/tweet/1
{
    "user" : "1"
}

GET /tweets/_search
{
    "query" : {
        "terms" : {
            "user" : {
                "index" : "users",
                "type" : "user",
                "id" : "2",
                "path" : "followers"
            }
        }
    }
}

这是原始页面的链接

https://www.elastic.co/guide/en/elasticsearch/reference/6.1/query-dsl-terms-query.html

在我上面的例子中,我需要设置我的存储,以便商品是一个字段,它的值是一个零件编号数组。 即

{
  "1 meter machining": ["abc1234", "1234"]
}

然后我可以对照我的生产订单文档查找 1 米加工零件编号

我已经测试过了,它可以工作。

【讨论】:

    【解决方案2】:

    elasticsearch 不支持连接。

    您可以先查询两次,先使用“small flat & form”获取所有partnumber,然后使用所有partnumber查询其他索引。

    否则尝试找到一种方法将这些合并到一个索引中。那会更好。通过将两者结合起来,更新商品不会给您带来任何问题。

    【讨论】:

    • 谢谢。我想可能是这样。我想我会尝试两次查询方法,因为我有许多其他数据集也与 production_orders 类型相关,而且事情很快就会变得忙碌和混乱。我会等到早上,如果我没有得到任何其他答案,我会接受你的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多