Elasticsearch: результаты нескольких запросов в одном? - PullRequest
0 голосов
/ 06 февраля 2020

имеют 4 разных результата в таких запросах:

GET _search
{
  "query": {
    "query_string": {
      "default_field": "desc",
      "query": "лес"
    }
  }
}
GET _search
{
  "query": {
    "query_string": {
      "default_field": "desc",
      "query": "лес*"
    }
  }
}
GET _search
{
  "query": {
    "query_string": {
      "default_field": "desc",
      "query": "*лес"
    }
  }
}
GET _search
{
  "query": {
    "query_string": {
      "default_field": "desc",
      "query": "*лес*"
    }
  }
}

Разница в позиции звездочки. Можно ли получить результаты по всем четырем запросам в одном?

1 Ответ

2 голосов
/ 06 февраля 2020

если вам не нужно различать, какой запрос определил успешное попадание, тогда вы можете просто использовать логический should запрос. Что-то вроде

{
  "query": {
    "bool": {
      "should": [
      {
        "query_string": {
          "default_field": "desc",
          "query": "лес"
        }
      },
      {
        "query_string": {
          "default_field": "desc",
          "query": "лес*"
        }
      },
      ... 
      ]
    }
  }
}

Обновление с некоторыми рекомендациями по запросам :

  • Я не уверен, что вам нужно *nec, nec*, и *nec* для. Если вы собираетесь объединить их, и вам не нужно дифференцировать совпадение, не достаточно ли *nec*?
  • Я бы порекомендовал вам переключиться с match_query на match (первый запрос), prefix и wildcard (для других запросов, если у вас есть не проанализированные подполя)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...