同一索引内的 Elasticsearch 类连接查询

Elasticsearch join-like query within same index

我有一个具有以下结构(映射)的索引

{
    "properties": {
        "content": {
            "type": "text",
        },
        "prev_id": {
            "type": "text",
        },
        "next_id": {
            "type": "text",
        }
    }
}

其中 prev_idnext_id 是该索引中文档的 ID(可能是 null 值)。

我想执行 _search 查询并获取 prev.contentnext.content 字段。

现在我使用两个查询:第一个用于按 content 字段搜索

curl -X GET 'localhost:9200/idx/_search'  -H 'content-type: application/json' -d '{
  "query": {
    "match": {
      "content": "yellow fox"
    }
  }
}'

第二个获取nextprev条记录。

curl -X GET 'localhost:9200/idx/_search'  -H 'content-type: application/json' -d '{
  "query": {
    "ids": {
      "values" : ["5bb93552e42140f955501d7b77dc8a0a", "cd027a48445a0a193bc80982748bc846", "9a5b7359d3081f10d099db87c3226d82"]
    }
  }
}'

然后我在应用程序端加入结果。

我可以通过一次查询实现我的目标吗?

PS:将next-prev存储为ID的目的是为了安全磁盘space。我有很多记录,content 字段很大。

你正在做的就是要走的路。但是内容有多大? - 也许您可以考虑不存储内容 (source = false)?