Làm cách nào để sử dụng Elaticsearch với MongoDB?


152

Tôi đã đi qua nhiều blog và trang web về việc định cấu hình Elaticsearch cho MongoDB để lập chỉ mục Bộ sưu tập trong MongoDB nhưng không có trang nào trong số đó đơn giản.

Vui lòng giải thích cho tôi quy trình từng bước để cài đặt elaticsearch, bao gồm:

  • cấu hình
  • chạy trong trình duyệt

Tôi đang sử dụng Node.js với express.js, vì vậy hãy giúp đỡ.


4
Lưu ý: Sông bị phản đối
abdul qayyum

Câu trả lời:


287

Câu trả lời này đủ để giúp bạn thiết lập để làm theo hướng dẫn này về Xây dựng thành phần tìm kiếm chức năng với MongoDB, Elaticsearch và AngularJS .

Nếu bạn đang muốn sử dụng tìm kiếm theo khía cạnh với dữ liệu từ API thì BirdWatch Repo của Matthiasn là thứ bạn có thể muốn xem xét.

Vì vậy, đây là cách bạn có thể thiết lập một "cụm" Elaticsearch để lập chỉ mục MongoDB để sử dụng trong ứng dụng NodeJS, Express trên phiên bản EC2 Ubuntu 14.04 mới.

Hãy chắc chắn rằng mọi thứ đều được cập nhật.

sudo apt-get update

Cài đặt NodeJS.

sudo apt-get install nodejs
sudo apt-get install npm

Cài đặt MongoDB - Các bước này trực tiếp từ tài liệu MongoDB. Chọn bất kỳ phiên bản nào bạn thấy thoải mái. Tôi đang gắn bó với v2.4.9 vì đây dường như là phiên bản mới nhất mà MongoDB-River hỗ trợ mà không gặp sự cố.

Nhập khóa GPG công khai MongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Cập nhật danh sách nguồn của bạn.

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Nhận gói 10gen.

sudo apt-get install mongodb-10gen

Sau đó chọn phiên bản của bạn nếu bạn không muốn gần đây nhất. Nếu bạn đang thiết lập môi trường của mình trên máy tính Windows 7 hoặc 8, hãy tránh xa v2.6 cho đến khi chúng khắc phục được một số lỗi khi chạy nó như một dịch vụ.

apt-get install mongodb-10gen=2.4.9

Ngăn chặn phiên bản cài đặt MongoDB của bạn bị lỗi khi bạn cập nhật.

echo "mongodb-10gen hold" | sudo dpkg --set-selections

Bắt đầu dịch vụ MongoDB.

sudo service mongodb start

Các tệp cơ sở dữ liệu của bạn mặc định là / var / lib / mongo và các tệp nhật ký của bạn thành / var / log / mongo.

Tạo một cơ sở dữ liệu thông qua trình vỏ mongo và đẩy một số dữ liệu giả vào đó.

mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )

Bây giờ để chuyển đổi MongoDB độc lập thành Bộ bản sao .

Đầu tiên Tắt quá trình.

mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()

Bây giờ chúng tôi đang chạy MongoDB như một dịch vụ, vì vậy chúng tôi không chuyển qua tùy chọn "--replset rs0" trong đối số dòng lệnh khi chúng tôi khởi động lại quy trình mongod. Thay vào đó, chúng tôi đặt nó trong tệp mongod.conf.

vi /etc/mongod.conf

Thêm các dòng này, thay thế cho đường dẫn db và nhật ký của bạn.

replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG

Bây giờ hãy mở vỏ mongo một lần nữa để khởi tạo bộ bản sao.

mongo DATABASE_NAME
config = { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ] }
rs.initiate(config)
rs.slaveOk() // allows read operations to run on secondary members.

Bây giờ cài đặt Elaticsearch. Tôi chỉ theo dõi Gist hữu ích này .

Hãy chắc chắn rằng Java đã được cài đặt.

sudo apt-get install openjdk-7-jre-headless -y

Bây giờ hãy gắn bó với v1.1.x cho đến khi lỗi plugin Mongo-River được sửa trong v1.2.1.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb
sudo dpkg -i elasticsearch-1.1.1.deb

curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
sudo rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch

Đảm bảo /etc/elSTERearch/elSTERearch.yml có các tùy chọn cấu hình sau được bật nếu bạn chỉ phát triển trên một nút duy nhất:

cluster.name: "MY_CLUSTER_NAME"
node.local: true

Bắt đầu dịch vụ Elaticsearch.

sudo service elasticsearch start

Xác nhận nó đang hoạt động.

curl http://localhost:9200

Nếu bạn thấy một cái gì đó như thế này thì bạn tốt.

{
  "status" : 200,
  "name" : "Chi Demon",
  "version" : {
    "number" : "1.1.2",
    "build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
    "build_timestamp" : "2014-05-22T12:27:39Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

Bây giờ hãy cài đặt các plugin Elaticsearch để nó có thể chơi với MongoDB.

bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0

Hai plugin này không cần thiết nhưng chúng tốt cho việc kiểm tra truy vấn và trực quan hóa các thay đổi đối với các chỉ mục của bạn.

bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk

Khởi động lại Elaticsearch.

sudo service elasticsearch restart

Cuối cùng lập chỉ mục một bộ sưu tập từ MongoDB.

curl -XPUT localhost:9200/_river/DATABASE_NAME/_meta -d '{
  "type": "mongodb",
  "mongodb": {
    "servers": [
      { "host": "127.0.0.1", "port": 27017 }
    ],
    "db": "DATABASE_NAME",
    "collection": "ACTUAL_COLLECTION_NAME",
    "options": { "secondary_read_preference": true },
    "gridfs": false
  },
  "index": {
    "name": "ARBITRARY INDEX NAME",
    "type": "ARBITRARY TYPE NAME"
  }
}'

Kiểm tra xem chỉ mục của bạn có trong Elaticsearch không

curl -XGET http://localhost:9200/_aliases

Kiểm tra sức khỏe cụm của bạn.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Nó có thể màu vàng với một số mảnh vỡ chưa được gán. Chúng tôi phải nói với Elaticsearch những gì chúng tôi muốn làm việc với.

curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'

Kiểm tra sức khỏe cụm một lần nữa. Nó nên có màu xanh bây giờ.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Đi chơi đi.


@ Duck5auce có bất kỳ ý tưởng nào về cách lấy kết quả (kết quả tìm kiếm co giãn) bằng express.js và hiển thị trong trình duyệt bằng cách sử dụng mẫu jade hoặc ejs, ví dụ như app.get ('search = "google"', function (req , độ phân giải) {}); và cảm ơn bạn vì câu trả lời tuyệt vời
bibin david

@bibindavid Tôi sẽ kiểm tra tài nguyên này. Nó hướng dẫn bạn thông qua việc tạo mô-đun máy khách ES phía máy chủ mà bạn đẩy các truy vấn được lọc qua hai mô-đun tùy chỉnh khác. Kết xuất dữ liệu vẫn được xử lý trên máy khách, nhưng nó phải là điểm khởi đầu tốt. sahan.me/posts/dabbling-in-elasticsearch-part-2-with-nodejs Github repo nằm ở đây: github.com/sahan/sahan.github.io/tree/master/resources/...
Donald Gary

Bạn có thể vui lòng cho tôi biết cái nào sẽ tốt hơn mongoosastic hoặc sử dụng mô-đun mongose ​​và elaticsearch khác nhau không ????
Bò tót Sudhanshu

7
Đã một năm kể từ câu trả lời tuyệt vời của duck5auce. Hãy nghĩ rằng mọi người hiện đang sử dụng 10gens [mongo-Connector] [1] để đồng bộ hóa cụm MongoDB với ElasticSearch trong thời gian thực. Nó bám đuôi oplog MongoDB. [1]: github.com/10gen-labs/mongo-connector/wiki/ory
Andrew Betts

8
@ duck5auce Vui lòng cập nhật câu trả lời này, nó đã hết hạn. Sông đã bị phản đối
tsturzl

35

Sử dụng sông có thể trình bày các vấn đề khi hoạt động của bạn mở rộng quy mô. Sông sẽ sử dụng một tấn bộ nhớ khi hoạt động nặng. Tôi khuyên bạn nên triển khai các mô hình tìm kiếm của riêng bạn hoặc nếu bạn đang sử dụng cầy mangut, bạn có thể xây dựng các mô hình tìm kiếm của bạn ngay lập tức hoặc sử dụng mongoosastic mà về cơ bản là điều này cho bạn.

Một nhược điểm khác đối với Mongodb River là bạn sẽ bị mắc kẹt khi sử dụng nhánh mongodb 2.4.x và ElasticSearch 0.90.x. Bạn sẽ bắt đầu thấy rằng bạn đang bỏ lỡ rất nhiều tính năng thực sự hay và dự án sông mongodb không tạo ra một sản phẩm có thể sử dụng đủ nhanh để giữ ổn định. Điều đó nói rằng sông Mongodb chắc chắn không phải là thứ tôi sẽ sản xuất. Nó đặt ra nhiều vấn đề hơn giá trị của nó. Nó sẽ ngẫu nhiên thả ghi dưới tải nặng, nó sẽ tiêu tốn rất nhiều bộ nhớ và không có thiết lập nào để giới hạn điều đó. Ngoài ra, river không cập nhật trong thời gian thực, nó đọc các oplog từ mongodb và điều này có thể trì hoãn các cập nhật miễn là 5 phút theo kinh nghiệm của tôi.

Gần đây, chúng tôi đã phải viết lại một phần lớn dự án của chúng tôi, bởi vì việc xảy ra hàng tuần là có sự cố xảy ra với ElasticSearch. Chúng tôi thậm chí đã đi xa đến mức thuê một chuyên gia tư vấn Dev Ops, người cũng đồng ý rằng tốt nhất là nên rời khỏi River.

CẬP NHẬT: Elaticsearch-mongodb-river hiện hỗ trợ ES v1.4.0 và mongodb v2.6.x. Tuy nhiên, bạn vẫn có thể gặp phải các vấn đề về hiệu năng đối với các hoạt động chèn / cập nhật nặng vì plugin này sẽ cố gắng đọc các oplog của mongodb để đồng bộ hóa. Nếu có rất nhiều thao tác kể từ khi khóa (hoặc chốt thay) mở khóa, bạn sẽ nhận thấy mức sử dụng bộ nhớ cực cao trên máy chủ tìm kiếm của bạn. Nếu bạn có kế hoạch để có một hoạt động lớn, sông không phải là một lựa chọn tốt. Các nhà phát triển của ElasticSearch vẫn khuyên bạn nên quản lý các chỉ mục của riêng mình bằng cách giao tiếp trực tiếp với API của họ bằng thư viện máy khách cho ngôn ngữ của bạn, thay vì sử dụng sông. Đây không thực sự là mục đích của dòng sông. Twitter-river là một ví dụ tuyệt vời về cách sử dụng sông. Đây thực chất là một cách tuyệt vời để lấy dữ liệu từ các nguồn bên ngoài,

Cũng xem xét rằng sông mongodb bị tụt lại phía sau trong phiên bản, vì nó không được duy trì bởi Tổ chức Tìm kiếm đàn hồi, nó được duy trì bởi một bên thứ ba. Quá trình phát triển đã bị kẹt trên nhánh v0.90 trong một thời gian dài sau khi phát hành v1.0 và khi một phiên bản cho v1.0 được phát hành, nó không ổn định cho đến khi elaticsearch phát hành v1.3.0. Phiên bản Mongodb cũng bị tụt lại phía sau. Bạn có thể thấy mình ở một vị trí chặt chẽ khi bạn đang muốn chuyển sang phiên bản mới hơn, đặc biệt là với Tìm kiếm đàn hồi dưới sự phát triển nặng nề như vậy, với nhiều tính năng rất được mong đợi trên đường. Theo kịp với Tìm kiếm đàn hồi mới nhất là rất quan trọng vì chúng tôi phụ thuộc rất nhiều vào việc liên tục cải thiện chức năng tìm kiếm vì đây là một phần cốt lõi của sản phẩm.

Tất cả trong tất cả các bạn sẽ có được một sản phẩm tốt hơn nếu bạn tự làm. Nó không khó lắm đâu. Nó chỉ là một cơ sở dữ liệu khác để quản lý mã của bạn và nó có thể dễ dàng được đưa vào các mô hình hiện tại của bạn mà không cần tái cấu trúc chính.


Bạn có một liên kết hoặc một lời khuyên mà tôi có thể lập chỉ mục tức là thông tin tác giả vào chỉ mục xuất bản kể từ khi xuất bản và tác giả nằm trong 2 bộ sưu tập và liên kết thông qua tài liệu tham khảo và giới thiệu
Marcel Djaman


Điều này sẽ giải thích cách bạn tham gia / liên quan đến dữ liệu đàn hồi.co
tsturzl

1
Elaticsearch là một DB lưu trữ tài liệu, chứ không phải là một mối quan hệ. Không thể liên quan đến dữ liệu trong elaticsearch, nhưng việc không chuẩn hóa có nhiều khả năng xảy ra, nhưng có thể được quản lý bằng logic bổ sung (có plugin). Cách phổ biến nhất để liên kết dữ liệu, như trạng thái trong liên kết ở trên, là lưu trữ một tham chiếu ID trong tài liệu tương đối. Hãy chắc chắn rằng bạn lưu trữ ID này trong một trường được đặt thành not_analyzed, nếu không bạn sẽ gặp khó khăn khi truy vấn nó, hãy làm theo cách các trường được phân tích được mã hóa.
tsturzl

4

Tôi thấy mongo-Connector hữu ích. Nó là dạng Mongo Labs (MongoDB Inc.) và hiện có thể được sử dụng với Elaticsearch 2.x

Trình quản lý tài liệu đàn hồi 2.x: https://github.com/mongodb-labs/elastic2-doc-manager

Trình kết nối mongo tạo một đường ống dẫn từ cụm MongoDB đến một hoặc nhiều hệ thống đích, chẳng hạn như Solr, Elaticsearch hoặc cụm MongoDB khác. Nó đồng bộ hóa dữ liệu trong MongoDB với mục tiêu sau đó theo dõi oplog MongoDB, theo kịp các hoạt động trong MongoDB trong thời gian thực. Nó đã được thử nghiệm với Python 2.6, 2.7 và 3.3+. Tài liệu chi tiết có sẵn trên wiki.

https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch


4

River là một giải pháp tốt khi bạn muốn có một giải pháp chung và đồng bộ hóa gần như theo thời gian thực.

Nếu bạn đã có dữ liệu trong MongoDB và muốn gửi nó rất dễ dàng đến Elaticsearch như "one-shot", bạn có thể thử gói của tôi trong Node.js https://github.com/itemsapi/elasticbulk .

Đó là sử dụng các luồng Node.js để bạn có thể nhập dữ liệu từ mọi thứ đang hỗ trợ các luồng (ví dụ: các tệp MongoDB, PostgreQuery, MySQL, JSON, v.v.)

Ví dụ về MongoDB cho Elaticsearch:

Cài đặt gói:

npm install elasticbulk
npm install mongoose
npm install bluebird

Tạo tập lệnh tức là script.js:

const elasticbulk = require('elasticbulk');
const mongoose = require('mongoose');
const Promise = require('bluebird');
mongoose.connect('mongodb://localhost/your_database_name', {
  useMongoClient: true
});

mongoose.Promise = Promise;

var Page = mongoose.model('Page', new mongoose.Schema({
  title: String,
  categories: Array
}), 'your_collection_name');

// stream query 
var stream = Page.find({
}, {title: 1, _id: 0, categories: 1}).limit(1500000).skip(0).batchSize(500).stream();

elasticbulk.import(stream, {
  index: 'my_index_name',
  type: 'my_type_name',
  host: 'localhost:9200',
})
.then(function(res) {
  console.log('Importing finished');
})

Gửi dữ liệu của bạn:

node script.js

Nó không phải là cực kỳ nhanh nhưng nó hoạt động cho hàng triệu bản ghi (nhờ các luồng).


3

Dưới đây là cách thực hiện điều này trên mongodb 3.0. Tôi đã sử dụng blog tốt đẹp này

  1. Cài đặt mongodb.
  2. Tạo thư mục dữ liệu:
$ mkdir RANDOM_PATH/node1
$ mkdir RANDOM_PATH/node2> 
$ mkdir RANDOM_PATH/node3
  1. Bắt đầu phiên bản Mongod
$ mongod --replSet test --port 27021 --dbpath node1
$ mongod --replSet test --port 27022 --dbpath node2
$ mongod --replSet test --port 27023 --dbpath node3
  1. Định cấu hình Bộ bản sao:
$ mongo
config = {_id: 'test', members: [ {_id: 0, host: 'localhost:27021'}, {_id: 1, host: 'localhost:27022'}]};    
rs.initiate(config);
  1. Cài đặt Elaticsearch:
a. Download and unzip the [latest Elasticsearch][2] distribution

b. Run bin/elasticsearch to start the es server.

c. Run curl -XGET http://localhost:9200/ to confirm it is working.
  1. Cài đặt và định cấu hình sông MongoDB:

$ bin / plugin --install com.github.richardwilly98.elaticsearch / elSTERearch-river-mongodb

$ bin / plugin - cài đặt elSTERearch / elSTERearch-mapper-file đính kèm

  1. Tạo ra sông River và chỉ số:

curl -XPUT ' http: // localhost: 8080 / _river / mongodb / _meta ' -d '{"type": "mongodb", "mongodb": {"db": "mydb", "bộ sưu tập": "foo" }, "index": {"name": "name", "type": "ngẫu nhiên"}} '

  1. Kiểm tra trên trình duyệt:

    http: // localhost: 9200 / _search? q = home


6
ElasticSearch đã không dùng các plugin sông. Đây chắc chắn không phải là cách tốt nhất để duy trì chỉ số tìm kiếm.
tsturzl

3

Ở đây tôi đã tìm thấy một tùy chọn tốt khác để di chuyển dữ liệu MongoDB của bạn sang Elaticsearch. Một daemon đi đồng bộ mongodb với elaticsearch trong thời gian thực. Đó là Monstache. Nó có sẵn tại: Monstache

Bên dưới setp ban đầu để cấu hình và sử dụng nó.

Bước 1:

C:\Program Files\MongoDB\Server\4.0\bin>mongod --smallfiles --oplogSize 50 --replSet test

Bước 2 :

C:\Program Files\MongoDB\Server\4.0\bin>mongo

C:\Program Files\MongoDB\Server\4.0\bin>mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
Server has startup warnings:
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
MongoDB Enterprise test:PRIMARY>

Bước 3: Xác minh nhân rộng.

MongoDB Enterprise test:PRIMARY> rs.status();
{
        "set" : "test",
        "date" : ISODate("2019-01-18T11:39:00.380Z"),
        "myState" : 1,
        "term" : NumberLong(2),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                }
        },
        "lastStableCheckpointTimestamp" : Timestamp(1547811517, 1),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "localhost:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 736,
                        "optime" : {
                                "ts" : Timestamp(1547811537, 1),
                                "t" : NumberLong(2)
                        },
                        "optimeDate" : ISODate("2019-01-18T11:38:57Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1547810805, 1),
                        "electionDate" : ISODate("2019-01-18T11:26:45Z"),
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                }
        ],
        "ok" : 1,
        "operationTime" : Timestamp(1547811537, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1547811537, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}
MongoDB Enterprise test:PRIMARY>

Bước 4. Tải xuống " https://github.com/rwynn/monstache/release ". Giải nén tải xuống và điều chỉnh biến PATH của bạn để bao gồm đường dẫn đến thư mục cho nền tảng của bạn. GO đến cmd và gõ "monstache -v" # 4.13.1 Monstache sử dụng định dạng TOML cho cấu hình của nó. Định cấu hình tệp để di chuyển có tên config.toml

Bước 5.

Cấu hình của tôi.toml ->

mongo-url = "mongodb://127.0.0.1:27017/?replicaSet=test"
elasticsearch-urls = ["http://localhost:9200"]

direct-read-namespaces = [ "admin.users" ]

gzip = true
stats = true
index-stats = true

elasticsearch-max-conns = 4
elasticsearch-max-seconds = 5
elasticsearch-max-bytes = 8000000 

dropped-collections = false
dropped-databases = false

resume = true
resume-write-unsafe = true
resume-name = "default"
index-files = false
file-highlighting = false
verbose = true
exit-after-direct-reads = false

index-as-update=true
index-oplog-time=true

Bước 6.

D:\15-1-19>monstache -f config.toml

Quái vật đang chạy ...

Xác nhận dữ liệu đã di chuyển tại Elaticsearch

Thêm bản ghi tại Mongo

Monstache Đã bắt sự kiện và di chuyển dữ liệu sang elaticsearch


3

Do trình kết nối mongo hiện đã chết, công ty của tôi đã quyết định xây dựng một công cụ sử dụng luồng thay đổi Mongo để xuất ra Elaticsearch.

Kết quả ban đầu của chúng tôi trông đầy hứa hẹn. Bạn có thể kiểm tra nó tại https://github.com/electionsexperts/mongo-stream . Chúng tôi vẫn còn sớm trong quá trình phát triển và sẽ hoan nghênh các đề xuất hoặc đóng góp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.