Как сделать запрос на соединение вasticsearch? - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблемы с ES-соединением, я много гуглил, но ничего полезного не нашел.Поэтому я спрашиваю здесь.

1.Отображения

У меня есть 2 индекса, отображение которых:

Отображения для журналов индекса:

"logs": {
        "properties": {
            "timestamp": {"type": "date"},
            "host": {"type": "keyword"},
            "log": {"type": "text"}

}

Отображение для версий индекса:

"versions": {
        "properties": {
            "host": {"type": "keyword"},
            "version": {"type": "keyword"}

}

2.Пример данных

Предположим, у меня есть такие данные:

Данные для журналов:

timestamp:1, host:a1, log: "sample log1"
timestamp:2, host:a1, log: "sample log2"
timestamp:3, host:a1, log: "sample log3"
timestamp:1, host:a2, log: "sample log4"
timestamp:2, host:a2, log: "sample log5"
timestamp:3, host:a2, log: "sample log6"
timestamp:1, host:a3, log: "sample log7"
timestamp:2, host:a3, log: "sample log8"
timestamp:3, host:a3, log: "sample log9"

Данные для версий:

host:a1, version:v1
host:a2, version:v1
host:a3, version:v2

3.Цель и ожидаемый результат

Что я хочу запросить: «Найти все журналы версии хоста, равной v1»

Результат должен быть:

timestamp:1, host:a1, log: "sample log1"
timestamp:2, host:a1, log: "sample log2"
timestamp:3, host:a1, log: "sample log3"
timestamp:1, host:a2, log: "sample log4"
timestamp:2, host:a2, log: "sample log5"
timestamp:3, host:a2, log: "sample log6"

Какя должен это сделать?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 19 февраля 2019

Elasticsearch не является реляционной базой данных и поэтому не поддерживает объединение.

Единственный способ обойти это, со многими минусами, это использовать parent-child (или тип данных объединения в v6) или вложенные документы.

** оба варианта не настолько масштабируемы и могут создавать проблемы с производительностью.

...