Я пытаюсь использовать один запрос, чтобы получить результаты двух запросов.
В настоящее время мне нужно выполнить два запроса для каждого запроса запроса из нескольких слов, а затем программно объединить результаты в коде, который мне не подходит.
В одном из запросов используется оператор AND
, в одном из них используется оператор OR
.
Вот первый запрос:
GET my_index/_search
{
"query": {
"bool": {
"must_not": [
{"exists": {"field": "deleted"}}
],
"must": [
{
"multi_match": {
"query": "refuse eating",
"fields": [
"title^3",
"desc^2",
"body"
],
"type": "best_fields",
"operator": "AND"
}
}
],
"filter": [
{"term": {"kind": "article"}},
{"term": {"status": "published"}}
]
}
}
}
А вот и второй запрос:
GET my_index/_search
{
"query": {
"bool": {
"must_not": [
{"exists": {"field": "deleted"}}
],
"must": [
{
"multi_match": {
"query": "refuse eating",
"fields": [
"title^3",
"desc^2",
"body"
],
"type": "best_fields",
"operator": "OR"
}
}
],
"filter": [
{"term": {"kind": "article"}},
{"term": {"status": "published"}}
]
}
}
}
Идея состоит в том, чтобы получить результаты первого запроса (запрос, который использует оператор AND
) в top , а затем получить результаты второго запроса (запрос, который использует OR
оператор) ниже первые результаты.
Есть ли способ добиться этого с помощью одного запроса вместо двух?