2016-12-04 2 views
0

Извините, мой английский плохойИскатель поиска с драйвером jdbc

Я использую elasticsearch и реку jdbc. У меня есть две таблицы со многими отношениями. Например:

продукта

+---+---------------+ 
| id| title   | 
+---+---------------+ 
| 1 | Product One | 
| 2 | Product Two | 
| 3 | Product Three | 
| 4 | Product Four | 
| 5 | Product Five | 
+---+---------------+ 

PRODUCT_CATEGORY

+------------+-------------+ 
| product_id | category_id | 
+------------+-------------+ 
|  1  |  1  | 
|  1  |  2  | 
|  1  |  3  | 
|  2  |  4  | 
|  2  |  5  | 
+------------+-------------+ 

Категория

+---+---------------+ 
| id| name   | 
+---+---------------+ 
| 1 | Category One | 
| 2 | Category Two | 
| 3 | Category Three| 
| 4 | Category Four | 
| 5 | Category Five | 
+---+---------------+ 

Я хочу использовать тип массива.

{ 
    "id": 1, 
    "name": "Product one", 
    "categories": {"Category One", "Category Two", "Category Three"} 
}, 

Как написать sql?

ответ

0

Использование elasticsearch-structured objects с JDBC SQL, нет необходимости group_concat:

SELECT 
    product.id AS _id, 
    product.id, 
    title, 
    name AS categories 
FROM product 
LEFT JOIN (
SELECT * 
FROM product_category 
LEFT JOIN category 
    ON product_category.category_id = category.id 
) t 
ON product.id = t.product_id 

Поскольку река была deprecated так ES v1.5, возможно, не запустить автономный импортер лучше.

+0

Можете ли вы дать мне, например, для автономного импортера? – kemal

+0

@kemal вот пример: https://github.com/jprante/elasticsearch-jdbc#jdbc-importer-definition-file – jasonz

Смежные вопросы