Конвертировать Mysql Query в эластичный поисковый запрос

Я работаю над эластичным поиском, но не эксперт в создании эластичных поисковых запросов. найдите мой запрос ниже и, если возможно, преобразуйте в запросasticsearch, тогда поблагодарите заранее

SELECT
`currency`.`id`                         AS `cur_id`,
`currency`.`currency_name`              AS `cur_name`,
`currency`.`currency_code`              AS `cur_code`,
`currency`.`currency_slug`              AS `cur_slug`,
`currency`.`logo`                       AS `cur_logo`,
`currency`.`added_date`                 AS `cur_added_date`,
`currency`.`mineable_or_not`            AS `mineable_or_not`,
`currency`.`market_cap`                 AS `cur_market_cap`,
`currency`.`circulating_supply`         AS `cur_circulating_supply`,
`currency`.`max_supply`                 AS `cur_max_supply`,
`currency`.`total_supply`               AS `cur_total_supply`,
`currency`.`market_cap`                 AS `ng_cur_market_cap`,
`currency`.`added_date`                 AS `ng_cur_added_date`,
`currency`.`circulating_supply`         AS `ng_cur_circulating_supply`,
`calculations`.`volume_1hour`           AS `cal_volume_1hour`,
`calculations`.`volume_24hour`          AS `cal_volume_24hour`,
`calculations`.`volume_168hour`         AS `cal_volume_168hour`,
`calculations`.`volume_720hour`         AS `cal_volume_720hour`,
`calculations`.`volume_24hour_btc`      AS `cal_volume_24hour_btc`,
`calculations`.`current_price`          AS `cal_current_price`,
`calculations`.`percentage_change`      AS `cal_percentage_change_24h`,
`calculations`.`percentage_change_1h`   AS `cal_percentage_change_1h`,
`calculations`.`percentage_change_168h` AS `cal_percentage_change_168h`,
`calculations`.`volume_24hour`          AS `ng_cal_volume_24hour`,
`calculations`.`current_price`          AS `ng_cal_current_price`
FROM `currency`
JOIN `calculations` ON `calculations`.`currency_id` = `currency`.`id`
WHERE `calculations`.`update_status` = 1 AND `currency`.`currency_type` != 3 AND `calculations`.`update_status` = 1 AND `currency`.`status` = 1
ORDER BY `market_cap` DESC
LIMIT 100

0

Решение

Как заметил Элиаса, в упругом поиске нет операции соединения.

Присоединяющиеся запросы

В общем, вы не можете выполнять запросы присоединения в ES. У вас могут быть отношения родитель / потомок в документах, которые находятся под тем же индексом, но я бы не стал их использовать. Мой лучший совет — денормализуйте ваши данные и сделайте каждый документ как можно более «автономным». В этом конкретном примере одним из возможных решений является сохранение расчетов внутри валюты, в результате вы получите запрос, подобный следующему:

{
"_source": ["id", "logo", ..., "calculations.volume_1h","calculations.volume_24h",...],
"query": {
"bool": {
"must":[
{
"match":{
"calculations.update_status":1
}
},
{
"match":{
"currency_type":3
}
},
{
"match":{
"status":1
}
}
]
},
"sort" : [
{
"market_cap": {
"order": "desc"}
}
]
"size":100
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]