2016-06-07 26 views
0

我正在使用聊天應用程序,我需要使用nodejs將聊天信息推送到指定索引的elasticsearch。如何使用Nodejs將數據推送到ElasticSearch中的指定索引

我已創建索引並將數據推送到elasticsearch使用下面的代碼。

var elasticsearch = require('elasticsearch'); 
var client = new elasticsearch.Client({ 
    host: 'localhost:9200', 
    log: 'trace' 
}); 

client.ping({ 
    requestTimeout: 30000, 

    // undocumented params are appended to the query string 
    hello: "elasticsearch" 
}, function (error) { 
    if (error) { 
    console.error('elasticsearch cluster is down!'); 
    } else { 
    console.log('All is well'); 
    } 
}); 



    var result = client.index({ 
    index: 'chennaiboxchat', 
    type: 'posts', 
    id: '1', 
    body: { 
     "glossary": { 
     "title": "example Test", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
      "GlossEntry": { 
       "ID": "SGML", 
       "SortAs": "SGML", 
       "GlossTerm": "Standard Generalized Markup Language", 
       "Acronym": "SGML", 
       "Abbrev": "ISO 8879:1986", 
       "GlossDef": { 
       "para": "A meta-markup language, used to create markup languages such as DocBook.", 
       "GlossSeeAlso": ["GML", "XML"] 
       }, 
       "GlossSee": "mark" 
      } 
      } 
     } 
     } 
    }, 
    refresh: true 
    }); 

但是,如果我運行此代碼下一次覆蓋data.so,我需要使用的NodeJS更新elasticsearch在同一個索引數據。建議我如何更新單個索引中的數據。

回答

2

默認情況下,您必須提供完整的文檔。因此,使用get獲取文檔,更改要更改的字段並將文檔放回原來的樣子。有更新API只提供部分文檔。這實際上也是如此,但elasticsearch會爲你做好準備並付諸實踐。如果你真的想要這樣做,你通常需要使用version屬性來做些什麼。更多信息可以在這裏找到: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_updates_with_a_partial_document

node.js使用的JavaScript驅動程序也支持更新端點。檢查文件在這裏: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-update

相關問題