小编J. *_*low的帖子

针对多种类型和不同字段的 Elasticsearch join-like 查询

我有一个名为 Elasticsearch 的索引my_index,其中包含两种类型的文档,Type1以及Type2.

  • 这两种文档类型包含关于同一类型实体的不同数据。
  • 这两种文档类型都包含相关实体的 ID。

我一直在尝试构建一个类似连接的查询,该查询将返回与两种文档类型的条件匹配的实体,但我无法让它工作,而且我也无法在 Elasticsearch 多类型或查询文档说这是不可能的。

我试图解决的问题是通过获取所有 Type1 命中和所有 Type2 命中并在 Elasticsearch 之外进行连接避免手动连接两个结果集,因为索引有数百万个文档

SQL 中的等价物是

select * from 
  Type1 inner join Type2 
    on Type2.EntityId = Type1.EntityId
where 
  Type1.Field = Condition AND
  Type2.Field = Condition [...]
Run Code Online (Sandbox Code Playgroud)

我用来查询的 URLhttp://elastic/my_index/Type1,Type2/_search包括这两种文档类型。

如果我对此 URL 执行空白查询,我会得到 Type1 和 Type2 的命中。

如果我为 Type1 添加一个标准,它会按预期工作:

{ "query": {
  "bool": {
    "must": [{
      "term": {
        "FieldOnType1": "lorem" } } ] } } }
Run Code Online (Sandbox Code Playgroud)

不知何故,Elasticsearch …

elasticsearch

5
推荐指数
1
解决办法
3017
查看次数

标签 统计

elasticsearch ×1