簡體   English   中英

NodeJS - 將數據插入索引的彈性搜索

[英]NodeJS - Elastic Search for insert data to index

我按照此鏈接獲取彈性搜索索引的映射,並希望將數據(不包括所有字段)插入其中,如下所示,但失敗了。

索引映射:

{
    "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
                        }
                    }
                }
            }
        }
    }
}

我准備的 client.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  
}'  

如何正確插入數據?

已棄用啟動 elasticsearch 6+ 多種類型。 您正在嘗試在創建映射時顯式放置類型,這是元映射,默認插入的映射是_doc

有關更多詳細信息,請參閱此內容: 刪除類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM