成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

基于nodejs將mongodb的數(shù)據(jù)實時同步到elasticsearch

miya / 850人閱讀

摘要:一前言因公司需要選用做全文檢索,持久化存儲選用的是,但是希望里面的數(shù)據(jù)發(fā)生改變可以實時同步到上,一開始主要使用的版本,可以搞定這個問題。或者修改中的某一條數(shù)據(jù),也會實時同步到中。如何把的主文檔和附件信息都同步到中利用的來實現(xiàn)。

一、前言

因公司需要選用elasticsearch做全文檢索,持久化存儲選用的是mongodb,但是希望mongodb里面的數(shù)據(jù)發(fā)生改變可以實時同步到elasticsearch上,一開始主要使用elasticsearch v1.7.2的版本,mongo-river可以搞定這個問題。隨著elasticsearch的升級,發(fā)現(xiàn)elasticsearch已經(jīng)放棄了mongo-river,咋整......Google之后發(fā)現(xiàn)一神器mongo-connector,國外大神用python寫的工具而且MongoDB官網(wǎng)也極力推薦使用。But,我們需要把文檔中的附件信息也同步到elasticsearch上,mongo-connector對附件同步支持的不是很好。能不能有個nodejs版本的數(shù)據(jù)同步?GitHub上發(fā)現(xiàn)一個大神寫的node-elasticsearch-sync很好用,但是功能太簡單了,不支持復(fù)雜的數(shù)據(jù)篩選,也不支持附件同步?;钊瞬荒鼙荒虮锼溃瑓⒖糿ode-elasticsearch-sync自己寫了一個同步工具node-mongodb-es-connector。

二、準(zhǔn)備工作

2.1 安裝mongodb

安裝mongodb可以去官網(wǎng)下載:

https://www.mongodb.com/

PS:關(guān)于如何搭建mongodb replica集群:

https://www.cnblogs.com/ljhdo...

2.2 安裝elasticsearch

安裝elasticsearch可以去官網(wǎng)下載:

https://www.elastic.co/cn/dow...

PS:關(guān)于elasticsearch-head、kibana、logstash等相關(guān)安裝請自己google吧

2.3 安裝nodejs

安裝nodejs可以去官網(wǎng)下載:

http://nodejs.cn/

PS:別忘記安裝npm,如何安裝請自己google吧

以上是使用node-mongodb-es-connector的前提

2.4 node-mongodb-es-connector下載地址

github: https://github.com/zhr8521007...

npm: https://www.npmjs.com/package...

三、文件結(jié)構(gòu)
├── crawlerDataConfig    項目構(gòu)建配置(這里添加你要同步數(shù)據(jù)的配置)
│       ├── mycarts.json  一個index一個配置文件(唯一需要自己增加或者修改的配置文件,這個文件只是提供了一個例子,不用可以刪除)    
│       └── ……    
├── lib  
│   ├── pool
│   │   ├──  elasticsearchPool.js  elasticsearch連接池
│   │   ├──  mongoDBPool.js      mongodb連接池
│   ├── promise
│   │   ├──  elasticsearchPromise.js elasticsearch方法類(增刪改查)  
│   │   ├──  mongoPromise.js      mongodb方法類(增刪改查)
│   ├── util
│   │   ├──  fsWatcher.js        配置文件監(jiān)控類(主要監(jiān)控crawlerDataConfig目錄里面的配置文件)
│   │   ├──  logger.js          日志類
│   │   ├──  oplogFactory.js      mongo-oplog觸發(fā)事件之后的執(zhí)行方法(增刪改)
│   │   ├──  tail.js           監(jiān)聽mongodb數(shù)據(jù)是否發(fā)生變化 
│   │   ├──  util.js                  工具類
│   ├── main.js                        主方法(主要是第一次啟動立刻同步mongodb里面的數(shù)據(jù)到elasticsearch)
├── logs
│       ├── logger-2018-03-23.log     同步數(shù)據(jù)打印日志
│       └── ……    
├── test
│   ├── img
│   │    ├── elasticsearch.jpg      圖片不解釋
│   │    ├── mongoDB.jpg        圖片不解釋
│   │    └── structure.jpg        圖片不解釋
│   └── test.js              測試類(啥也沒寫)
├── app.js       啟動文件               
├── index.js      接口文件(只提供配置文件的增刪改)
├── package-lock.json 
├── package.json
├── ReadMe.md      英文文檔(markdown)
├── README.zh-CN.md  中文文檔(markdown)
└── LICENSE

mycarts.json文件(這個文件只是提供了一個例子)

{
    "mongodb": {
        "m_database": "myTest",
        "m_collectionname": "carts",
        "m_filterfilds": {
            "version" : "2.0"
        },
        "m_returnfilds": {
            "cName": 1,
            "cPrice": 1,
            "cImgSrc": 1
        },
        "m_connection": {
            "m_servers": [
                "localhost:29031",
                "localhost:29032",
                "localhost:29033"
            ],
            "m_authentication": {
                "username": "UserAdmin",
                "password": "pass1234",
                "authsource":"admin",
                "replicaset":"my_replica",
                "ssl":false
            }
        },
        "m_documentsinbatch": 5000,
        "m_delaytime": 1000
    },
    "elasticsearch": {
        "e_index": "mycarts",
        "e_type": "carts",
        "e_connection": {
            "e_server": "http://localhost:9200",
            "e_httpauth": {
                "username": "EsAdmin",
                "password": "pass1234"
            }
        },
        "e_pipeline": "mypipeline",
        "e_iscontainattachment": true
    }
}

m_database - MongoDB里需要監(jiān)聽的數(shù)據(jù)庫.

m_collectionname - MongoDB里需要監(jiān)聽的collection.

m_filterfilds - MongoDB里的查詢條件,目前支持一些簡單的查詢條件.(默認(rèn)值為null)

m_returnfilds - MongoDB需要返回的字段.(默認(rèn)值為null)

m_connection

m_servers - MongoDB服務(wù)器的地址.(replica結(jié)構(gòu),數(shù)組格式)

m_authentication - 如果需要MongoDB的登錄驗證使用下面配置(默認(rèn)值為null).

- username - MongoDB連接的用戶名.
- password - MongoDB連接的密碼.
- authsource - MongoDB用戶認(rèn)證,默認(rèn)為admin.
- replicaset - MongoDB的replica結(jié)構(gòu)的名字.
- ssl- MongoDB的ssl.(默認(rèn)值為false).

m_documentsinbatch - 一次性從mongodb往Elasticsearch里傳入數(shù)據(jù)的條數(shù).
(你可以設(shè)置比較大的值,默認(rèn)為1000.).

m_delaytime - 每次進elasticsearch數(shù)據(jù)的間隔時間(默認(rèn)值為1000ms).

e_index - ElasticSearch里的index.

e_type - ElasticSearch里的type,這里的type主要為了使用bulk.

e_connection

e_server - ElasticSearch的連接字符串.

e_httpauth - 如果ElasticSearch需要登錄驗證使用下面配置(默認(rèn)值為null).

username - ElasticSearch連接的用戶名.

password - ElasticSearch連接的密碼.

e_pipeline - ElasticSearch 中pipeline的名稱.(沒有pipeline就填null)

e_iscontainattachment - pipeline是否包含附件規(guī)則(默認(rèn)值為false).

四、如何使用

用戶可以事先在/crawlerDataConfig目錄下編輯好自己的配置文件,文件必須以json格式存放.

在文件根目錄下,打開cmd命令窗口,輸入以下信息:

node app.js

項目啟動后,修改配置文件 (如:mycarts.json),數(shù)據(jù)也會實時同步?;蛘咝薷膍ongodb中的某一條數(shù)據(jù),也會實時同步到elasticsearch中。

PS:如何把mongodb的主文檔和附件信息都同步到elasticsearch中?

利用elasticsearch的pipeline來實現(xiàn)。

首先需要創(chuàng)建一個pipeline到elasticsearch中:

PUT _ingest/pipeline/mypipeline
{
  "description" : "Extract attachment information from arrays",
  "processors" : [
    {
      "foreach": {
        "field": "attachments",
        "processor": {
          "attachment": {
            "target_field": "_ingest._value.attachment",
            "field": "_ingest._value.data"
          }
        }
      }
    }
  ]
}

然后在配置文件中(如:mycarts.json)修改節(jié)點數(shù)據(jù)即可

"e_pipeline": "mypipeline"
五、結(jié)果展示

mongodb里面的數(shù)據(jù)

elasticsearch里面的數(shù)據(jù)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/19241.html

相關(guān)文章

  • nodejs 實現(xiàn) 磁力鏈接資源搜索 BT磁力鏈接爬蟲

    摘要:項目簡介前端站點項目效果預(yù)覽使用實現(xiàn)磁力鏈接爬蟲磁力鏈接解析成種子信息,保存到數(shù)據(jù)庫,利用實現(xiàn)中文檢索。搭建磁力鏈接搜索引擎源碼地址后端腳本磁力鏈接獲取磁力鏈接解析入庫定時同步源碼地址此項目僅用學(xué)習(xí)交流技術(shù)使用不做商業(yè)用途。 項目簡介 前端站點 項目效果預(yù)覽 http://findcl.com 使用 nodejs 實現(xiàn)磁力鏈接爬蟲 磁力鏈接解析成 torrent種子信息,保存到數(shù)據(jù)...

    fish 評論0 收藏0
  • 基于TableStore數(shù)據(jù)采集分析系統(tǒng)介紹

    摘要:今天我們來介紹一下基于阿里云表格存儲,以及相關(guān)的大數(shù)據(jù)產(chǎn)品來采集與分析數(shù)據(jù)的方案。我們嘗試一種基于和阿里云其他大數(shù)據(jù)產(chǎn)品的新方案,我們先看架構(gòu)圖圖中關(guān)鍵路徑分析頁等客戶端先通過埋點系統(tǒng)收集數(shù)據(jù),然后通過表格存儲的將數(shù)據(jù)寫入的原始數(shù)據(jù)表。 摘要: 摘要 在互聯(lián)網(wǎng)高度發(fā)達的今天,ipad、手機等智能終端設(shè)備隨處可見,運行在其中的APP、網(wǎng)站也非常多,如何采集終端數(shù)據(jù)進行分析,提升軟件的品質(zhì)...

    niuxiaowei111 評論0 收藏0

發(fā)表評論

0條評論

miya

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<