Эластичное совпадение с набором подстановочных строк - PullRequest
0 голосов
/ 28 мая 2019

У меня есть база данных всех звонков техподдержки, которые я получаю от своих клиентов. Некоторые клиенты важнее других. Некоторые никогда не должны были звонить в первую очередь.

Теперь я пытаюсь найти все строки, которые соответствуют множеству чисел. У меня есть список около 200 номеров, которые я хочу увидеть. Данные в эластичном хранилище хранятся таким образом, когда я не знаю, есть ли код страны, включенный в число, или что-то подобное Таким образом, мне пришлось бы искать каждый номер с подстановочным знаком.

У меня есть CSV-файл, в котором хранятся такие цифры:

"323555421","Joe Blow","Management Inc"
"707555421","Douggie","Multinational Inc"

Вот самое простое решение, которое я смог найти:

GET /_search
{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "should": [
            {"query": {"wildcard": {"phone": {"value": "*3235554121"}}}},
            {"query": {"wildcard": {"phone": {"value": "*8185554121"}}}},
//...100 more records
            {"query": {"wildcard": {"phone": {"value": "*7075554121"}}}},
            {"query": {"wildcard": {"phone": {"value": "*2025554121"}}}}
          ]
        }
      }
    }
  }
}

Помимо того, что это выглядит ужасно чертовски, я не могу дать его своим пользователям, потому что никто не хочет сидеть там и использовать возвышенное, чтобы преобразовать простой список телефонных номеров в этом монстре запроса-подстановки-телефона.

Кроме того, когда я что-то найду, я не смогу узнать имя парня, если не найду свой исходный файл csv.

Я мог загрузить свой CSV в эластичный файл и объединить его, но не мог понять, как это легко сделать.

То, что может быть разрешено в SQL в одном простом запросе, превращается в серьезную катастрофу. У кого есть идеи?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...