同一索引内的 Elasticsearch 类连接查询
Elasticsearch join-like query within same index
我有一个具有以下结构(映射)的索引
{
"properties": {
"content": {
"type": "text",
},
"prev_id": {
"type": "text",
},
"next_id": {
"type": "text",
}
}
}
其中 prev_id
和 next_id
是该索引中文档的 ID(可能是 null
值)。
我想执行 _search
查询并获取 prev.content
和 next.content
字段。
现在我使用两个查询:第一个用于按 content
字段搜索
curl -X GET 'localhost:9200/idx/_search' -H 'content-type: application/json' -d '{
"query": {
"match": {
"content": "yellow fox"
}
}
}'
第二个获取next
和prev
条记录。
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)?
我有一个具有以下结构(映射)的索引
{
"properties": {
"content": {
"type": "text",
},
"prev_id": {
"type": "text",
},
"next_id": {
"type": "text",
}
}
}
其中 prev_id
和 next_id
是该索引中文档的 ID(可能是 null
值)。
我想执行 _search
查询并获取 prev.content
和 next.content
字段。
现在我使用两个查询:第一个用于按 content
字段搜索
curl -X GET 'localhost:9200/idx/_search' -H 'content-type: application/json' -d '{
"query": {
"match": {
"content": "yellow fox"
}
}
}'
第二个获取next
和prev
条记录。
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)?