【发布时间】:2020-02-06 12:16:59
【问题描述】:
我在公司使用 Elasticsearch 已经有一段时间了,到目前为止,我们的搜索似乎效果很好。 我们从客户那里看到了更复杂的用例,需要更多的“临时/高级”查询功能和文档间关系(或传统意义上的联接)。 我知道 ES 不是为连接而构建的,非规范化是推荐的方式。到目前为止,我们一直在对文档进行非规范化以支持每个用例,而这本身对我们来说变得过于复杂和昂贵,因为我们的客户必须等待很长时间才能推出此代码更改。
我们的业务经常批评我们“嘿,您的数据模型不正确。它不适合更智能的查询”。团队每次都很难让他们理解为什么需要非规范化。
几个问题的例子:
"Find me all the persons having the same birthdays"
"Find me all the persons travelling to the same cities within the same time frame"
想象每个事件文档都是带有旅行详细信息的人员记录。
那么有没有管道搜索的概念,我可以将搜索分成多个搜索查询并将一个的输出作为输入传递给另一个? 或者有没有其他推荐的方法来解决这些类型的问题,而不必让海洋沸腾?
【问题讨论】:
-
您能分享一份“带有旅行详细信息的人员记录”的样本文件吗?很确定上述两个查询可以通过聚合简单地解决。
-
只是出于好奇,您为什么为此选择 nosql 方法?似乎关系数据库可以做的很好
标签: elasticsearch elasticsearch-aggregation elasticsearch-6