У меня есть база данных всех звонков техподдержки, которые я получаю от своих клиентов. Некоторые клиенты важнее других. Некоторые никогда не должны были звонить в первую очередь.
Теперь я пытаюсь найти все строки, которые соответствуют множеству чисел. У меня есть список около 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 в одном простом запросе, превращается в серьезную катастрофу. У кого есть идеи?
Спасибо!