NodeJS - Elasti c Поиск данных для вставки в индекс - PullRequest
0 голосов
/ 12 февраля 2020

Я перешел по этой ссылке , чтобы получить отображение поискового индекса Elasti c, и хотел бы вставить в него данные (не включая все поля), как показано ниже, но не получилось.

Отображение индекса:

{
    "mymapping": {
        "mappings": {
            "_meta": {
                "beat": "apm",
                "version": "7.5.0"
            },
            "dynamic_templates": [
                {
                    "labels": {
                        "path_match": "labels.*",
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                }
            ],
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "people": {
                    "dynamic": "false",
                    "properties": {
                        "id": {
                            "type": "keyword",
                            "ignore_above": 1024
                        },
                        "name": {
                            "type": "keyword",
                            "ignore_above": 1024
                        }
                    }
                }
            }
        }
    }
}

Я подготовил клиента. js без проблем, вот InsertData. js:

const esClient = require('./client');
const insertDoc = async function(indexName, _id, mappingType, data){
    return await esClient.index({
        index: indexName,
        type: mappingType,
        id: _id,
        body: data
    });
}

module.exports = insertDoc;
async function test(){
    const data = {
        beat: 'apm',
        version: '7.5.0'
    }
    try {
        const resp = await insertDoc('mymapping', 2, '_meta', data);
        console.log(resp);
    } catch (e) {
        console.log(e);
    }
}
test();

Когда я пытался вставить данные, там было исключение. Вывод ошибки:

message:  
'[illegal_argument_exception] Rejecting mapping update to [mymapping] as the final mapping would have more than 1 type: [_doc, _meta]',  
path: '/mymapping/_doc/2',  
query: { type: '_meta' },  
body:  
{ error:  
    { root_cause: [Array],  
    type: 'illegal_argument_exception',  
    reason:  
        'Rejecting mapping update to [mymapping] as the final mapping would have more than 1 type: [_doc, _meta]' },  
    status: 400 },  
statusCode: 400,  
response:  
'{  
    "error": {  
        "root_cause": [  
            {  
                "type": "illegal_argument_exception",  
                "reason": "Rejecting mapping update to [mymapping] as the final mapping would have more than 1 type: [_doc, _meta]"  
            }  
        ],  
        "type": "illegal_argument_exception",  
        "reason": "Rejecting mapping update to [mymapping] as the final mapping would have more than 1 type: [_doc, _meta]"  
    },  
    "status": 400  
}'  

Как правильно вставить данные?

1 Ответ

1 голос
/ 12 февраля 2020

Начиная сasticsearch 6+ несколько типов устарели. Вы пытаетесь явно указать тип при создании сопоставления, которое является мета, а то, которое вставляется, будет по умолчанию _doc.

См. Это для более подробной информации: Удаление типов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...