У меня есть пользовательское поле, которое зависит от множества других полей, оно имеет несколько внешних ключей к другой таблице и имеет отношение многие ко многим, используя сводную таблицу, и отношения один ко многим.
API как вложенная JSON структура. Реляционные данные выглядят так для конкретного пользователя.
user = {
id : _212dasd,
name: "alphabeta",
key1_id = 23,
key1 : {
id: 23,
name: "new name"
},
key2 : [
{
id: _asdak61526,
key2_id : 2
user_id : _212dasd,
},
{
id: _asdak6152a,
key2_id : 3
user_id : _212dasd
}
],
key3: {
name : "gama",
key_3_nested : {
name : "abc",
key_3_nested_levle2 : {
name : "xyz",
}
}
}
}
Как можно синхронизировать mysql реляционные данные с поиском elasti c, так как большинство прочитанных будет go с elasti c поиск, я использую log-sta sh для синхронизации.
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"
# The user we wish to execute our statement as
jdbc_user => "root"
jdbc_password => "root"
# The path to our downloaded jdbc driver
jdbc_driver_library => "/~/mysql-connector-java-5.1.17.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# our query
statement => "SELECT * FROM users INNER JOIN table2 ON table2.user_id = users.id" // just a demo query
schedule => "* * * * * *"
}
}
output {
elasticsearch {
document_id=> "%{sk_id}.%{user_id}"
document_type => "doc"
index => "db_prd"
hosts => ["http://localhost:9200"]
}
stdout{
codec => json_lines
}
}
Вопрос: Как мне поддерживать отношение, хорошая идея - создание запроса на множественное объединение, так как каждый раз он создает множественное большое объединение для большого количества пользовательских данных и их неоптимизированной структуры. Для 10000 пользователей и присоединение к нескольким таблицам замедлится синхронизация c. Будет ли он синхронизировать c каждый индекс или только один?
Как получить вложенную структуру API из поиска elasti c.