Загрузка данных


indexer {
    mem_limit  = 1024M
    max_iops   = 100
    max_iosize = 1M
}

#
# Common PostgreSQL source settings
#

source pg_main_base {
    type            = pgsql
    sql_host        = {{ sql_host }}
    sql_user        = {{ sql_user }}
    sql_pass        = {{ sql_pass }}
    sql_db          = {{ sql_db }}
    sql_port        = 5432

    sql_range_step  = 100000
}

#
# MAIN 01
#

source pg_main_01 : pg_main_base {
    sql_query_range = \
        SELECT 1, 25000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_01 {
    type   = plain
    source = pg_main_01
    path   = /var/lib/manticore/mail_main_01
}

#
# MAIN 02
#

source pg_main_02 : pg_main_base {
    sql_query_range = \
        SELECT 25000001, 50000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_02 {
    type   = plain
    source = pg_main_02
    path   = /var/lib/manticore/mail_main_02
}

#
# MAIN 03
#

source pg_main_03 : pg_main_base {
    sql_query_range = \
        SELECT 50000001, 75000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_03 {
    type   = plain
    source = pg_main_03
    path   = /var/lib/manticore/mail_main_03
}

#
# MAIN 04
#

source pg_main_04 : pg_main_base {
    sql_query_range = \
        SELECT 75000001, 100000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_04 {
    type   = plain
    source = pg_main_04
    path   = /var/lib/manticore/mail_main_04
}

#
# MAIN 05
#

source pg_main_05 : pg_main_base {
    sql_query_range = \
        SELECT 100000001, 125000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_05 {
    type   = plain
    source = pg_main_05
    path   = /var/lib/manticore/mail_main_05
}

#
# MAIN 06
#

source pg_main_06 : pg_main_base {
    sql_query_range = \
        SELECT 125000001, 150000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_06 {
    type   = plain
    source = pg_main_06
    path   = /var/lib/manticore/mail_main_06
}

#
# MAIN 07
#

source pg_main_07 : pg_main_base {
    sql_query_range = \
        SELECT 150000001, 175000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_07 {
    type   = plain
    source = pg_main_07
    path   = /var/lib/manticore/mail_main_07
}

#
# MAIN 08
#

source pg_main_08 : pg_main_base {
    sql_query_range = \
        SELECT 175000001, 200000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_08 {
    type   = plain
    source = pg_main_08
    path   = /var/lib/manticore/mail_main_08
}

#
# MAIN 09
#

source pg_main_09 : pg_main_base {
    sql_query_range = \
        SELECT 200000001, 250000000

    sql_query = \
        SELECT \
            id, \
            message_id, \
            subject, \
            sent_timestamp, \
            header_from, \
            header_to, \
            envelope_from \
        FROM public.mail_archive_email \
        WHERE id >= $start
          AND id <= $end
}

table mail_main_09 {
    type   = plain
    source = pg_main_09
    path   = /var/lib/manticore/mail_main_09
}

#
# DELTA
#
# Для delta нужен timestamp-based watermark.
# В данном варианте предполагаем, что в PostgreSQL есть:
#
#   manticore_deltabreaker(
#       index_name text primary key,
#       created_at timestamptz
#   )
#

source pg_delta : pg_main_base {
    sql_query_range = \
        SELECT \
            EXTRACT(EPOCH FROM NOW() - INTERVAL '24 hours')::bigint, \
            EXTRACT(EPOCH FROM NOW())::bigint

    sql_query = \
        SELECT \
            id,
            message_id,
            subject,
            sent_timestamp,
            header_from,
            header_to,
            envelope_from
        FROM public.mail_archive_email
        WHERE EXTRACT(EPOCH FROM updated_at)::bigint >= $start
          AND EXTRACT(EPOCH FROM updated_at)::bigint <= $end

    sql_query_killlist = \
        SELECT id
        FROM public.mail_archive_email
        WHERE EXTRACT(EPOCH FROM updated_at)::bigint >= $start
          AND EXTRACT(EPOCH FROM updated_at)::bigint <= $end
}

table mail_delta {
    type = plain

    source = pg_delta

    path = /var/lib/manticore/mail_delta

    killlist_target = \
        mail_main_01:kl, \
        mail_main_02:kl, \
        mail_main_03:kl, \
        mail_main_04:kl, \
        mail_main_05:kl, \
        mail_main_06:kl, \
        mail_main_07:kl, \
        mail_main_08:kl, \
        mail_main_09:kl
}

#
# ONE TABLE FOR APPLICATION
#

table mail_all {
    type = distributed

    local = mail_main_01
    local = mail_main_02
    local = mail_main_03
    local = mail_main_04
    local = mail_main_05
    local = mail_main_06
    local = mail_main_07
    local = mail_main_08
    local = mail_main_09
    local = mail_delta
}

searchd {
    listen          = 0.0.0.0:9306:mysql41
    listen          = 0.0.0.0:9308:http

    log             = /var/log/manticore/searchd.log
    query_log       = /var/log/manticore/query.log
    pid_file        = /var/run/manticore/searchd.pid

    binlog_path     = /var/lib/manticore
}