#json #elasticsearch #filtering #kibana #non-relational-database
#json #elasticsearch #фильтрация #kibana #нереляционная база данных
Вопрос:
Я пытаюсь отфильтровать набор данных на основе двух условий. Я хочу, чтобы мои результаты возвращали запись, если она удовлетворяет либо условию 1 (где запись содержит A и B), либо условию 2 (где запись содержит A и C), с включенными подстановочными знаками.
Например, если у меня есть эта таблица здесь (а Z — это просто случайный символ-заполнитель):
TABLE 1
AZZZ ZBZ
ZZZZ ZAZ
ZZAZ ZZB
CZZZ ZZA
AZZZ ZCZ
ZZZZ ZZZ
ZZCZ ZZZ
Я бы хотел, чтобы мой возвращаемый результат был таким:
TABLE 1 (Returned)
AZZZ ZBZ
ZZAZ ZZB
CZZZ ZZA
AZZZ ZCZ
Я пробовал коды в этих строках, но, похоже, не могу получить желаемых результатов:
{
"query":{
"query_string":{
"analyze_wildcard":true,
"default filter":"*",
"query":"A B"
}
}
}
Есть мысли?
Ответ №1:
- Запросы с подстановочными знаками позволяют сопоставлять части строки с не проанализированными (
keyword
) полями, например:POST my_index/_search { "query": { "wildcard" : { "my_field" : "*A*" } } }
- Запросы Bool — ваш друг для объединения вещей. Я думаю, было бы проще преобразовать это в следующее, что должно быть эквивалентно:
POST my_index/_search { "query": { "bool" : { "must" : { "wildcard" : { "my_field" : "*A*" } }, "should" : [ { "wildcard" : { "my_field" : "*B*" } }, { "wildcard" : { "my_field" : "*C*" } } ], "minimum_should_match" : 1 } } }
Но это будет не очень эффективно. Немного сложно абстрагироваться от того, какие данные у вас там есть и чего вы хотите достичь, но, может быть, есть лучший способ добиться этого? Проблема во многом моделируется вокруг функций реляционных баз данных, в то время как поисковая система имеет гораздо больше возможностей.
Комментарии:
1. Это сделало свое дело. Большое вам спасибо. У вас хорошая интуиция, проблема моделируется вокруг реляционной базы данных, потому что мы смоделировали весь этот проект на реляционной базе данных, но через два месяца столкнулись с нереляционной базой данных, и никто (включая меня) не имеет никакого опыта работы с этими базами данных. Я все еще пытаюсь перевести наш план анализа / sql-поиск в нереляционную базу данных / Elasticsearch, и у меня возникают некоторые проблемы с этим. Будут ли руководства по elastic.co веб-сайты лучше всего подходят для изучения elasticsearch, или есть другие хорошие инструменты для изучения?
2. Документы хорошие и довольно обширные. Если вам нужна сокращенная версия, есть также официальные тренинги , особенно Engineering I и II для вашего варианта использования. Отказ от ответственности: я работаю в Elastic и иногда провожу тренинги.
3. Спасибо, я просмотрю документы.