将副本添加到索引模板上的eslaticsearch

时间:2018-04-10 11:40:56

标签: javascript node.js elasticsearch elasticsearch-5 elasticsearch-6

我使用elasticsearch 6.2,我想优化elasticsearch搜索功能,将所有字段值复制到一个值,然后生成比在一个字段而不是多个字段上按查询字符串搜索。怎么做?如何复制所有字段,现在重要的是哪一个字段。

初始化索引模板

export const init = async types => {
    try {
        let client = createClient()

        const templateSettings = {
            index_patterns : ['*'],
            settings: indexTemplateSettings,
            mappings : types.reduce((p, type) => ({
                ...p,
                [type] : {
                    numeric_detection: true,
                    _source : {enabled : true},
                    'properties': {
                        'searchIndex': {
                            'type': 'text',
                        },
                        '*': {
                            'type': 'text',
                            'copy_to': 'searchIndex',
                        },
                    },
                },
            }), {}),
        }

        await client.indices.putTemplate({
            name: 'default',
            body: templateSettings,
        },(error, response) => {
            logger.silly('Pushing of index template completed', response)
        })
    } catch (e) {
        logger.error(e)
    }
}

放入索引

export const push = (message, type) => new Promise(async resolve => {
    try {
        let client = createClient()
        let indexCreationTime = new Date('2016-02-08').toISOString().substring(0, 10)

        // '2016-02-08'
        console.log(message, 'message')
        console.log(type, 'type')

        await client.index({
            index: type.toLowerCase(),
            type,
            body: {
                ...message,
                _timestampIndex: indexCreationTime,
            },
        },
        (error, response) => {
            logger.silly('Pushing of data completed', response)

            resolve(response)
        })

    } catch (e) {
        logger.error(e)
    }
})

1 个答案:

答案 0 :(得分:1)

最好的方法是创建一个利用dynamic template的索引模板,该模板将捕获所有字段并将fh :: [Human] -> [Human] 参数添加到其定义中。

copy_to