Как использовать «подстановочный знак» с многострочным запросом в кибане? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь выполнить следующий запрос:

{"wildcard:" {"TerminalId": 70}} AND tranSactionResponseCode: 1

Вышеприведенные запросы и ошибки: не удалосьзапрос синтаксического анализа .......

, но когда я запускаю вышеуказанный запрос как: {"wildcard:" {"TerminalId": 70}} или когда я запускаю только условие AND: tranSactionResponseCode: 1 itработает успешно.Помогите мне разобраться, как использовать оба условия в одном запросе.

1 Ответ

0 голосов
/ 11 октября 2018

Я предполагаю, что ваш terminalId имеет тип text.

. Вы можете попробовать два нижеприведенных запроса в зависимости от вашего использования.Первый - вы можете использовать только запрос bool.

GET mytestindex/_search
{
  "query": { 
    "bool": { 
      "must": [
        { "wildcard": { "terminalId":   "70*"        }}, 
        { "match": { "tranSactionResponseCode": "1" }}  
      ]
    }
  }
}

Во-вторых, насколько я понимаю, вы хотите фильтровать документы на основе кода транзакции.В этом случае, а также для повышения производительности запросов вы можете использовать следующий запрос, который использует bool и filter.Обратите внимание, что здесь я использовал wildcard в качестве контекста запроса.

GET mytestindex/_search
{
  "query": { 
    "bool": { 
      "must": [
        { "wildcard": { "terminalId":   "70*" }       
        } 
      ],
      "filter": [ 
        { "term":  { "tranSactionResponseCode": "2" }}
      ]
    }
  }
}

Проверяйте счет при выполнении обоих запросов.Второй вариант не учитывает tranSactionResponseCode для расчета score.

Надеюсь, это поможет!

...