I have an index with a following structure (mapping)
{
"properties": {
"content": {
"type": "text",
},
"prev_id": {
"type": "text",
},
"next_id": {
"type": "text",
}
}
}
where prev_id
and next_id
are IDs of documents in this index (may be null
values).
I want to perform _search
query and get prev.content
and next.content
fields.
Now I use two queries: the first for searching by content
field
curl -X GET 'localhost:9200/idx/_search' -H 'content-type: application/json' -d '{
"query": {
"match": {
"content": "yellow fox"
}
}
}'
and the second to get next
and prev
records.
curl -X GET 'localhost:9200/idx/_search' -H 'content-type: application/json' -d '{
"query": {
"ids": {
"values" : ["5bb93552e42140f955501d7b77dc8a0a", "cd027a48445a0a193bc80982748bc846", "9a5b7359d3081f10d099db87c3226d82"]
}
}
}'
Then I join results on application-side.
Can I achieve my goal with one query only?
PS: the purpose to store next-prev
as IDs is to safe disk space. I have a lot of records and content
field is quite large.
CodePudding user response:
What you are doing is the way to go. But how large is the content? - Maybe you can consider not storing content ( source = false)?