MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menggunakan Elasticsearch dengan MongoDB?

Jawaban ini seharusnya cukup untuk menyiapkan Anda mengikuti tutorial tentang Membangun komponen pencarian fungsional dengan MongoDB, Elasticsearch, dan AngularJS.

Jika Anda ingin menggunakan penelusuran segi dengan data dari API, maka Repo BirdWatch Matthiasn adalah sesuatu yang mungkin ingin Anda lihat.

Jadi, inilah cara Anda dapat menyiapkan "cluster" Elasticsearch node tunggal untuk mengindeks MongoDB untuk digunakan dalam aplikasi NodeJS, Express pada instance EC2 Ubuntu 14.04 yang baru.

Pastikan semuanya mutakhir.

sudo apt-get update

Instal NodeJS.

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

Instal MongoDB - Langkah-langkah ini langsung dari dokumen MongoDB. Pilih versi apa pun yang Anda sukai. Saya tetap menggunakan v2.4.9 karena tampaknya ini adalah versi terbaru yang didukung MongoDB-River tanpa masalah.

Impor Kunci GPG publik MongoDB.

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

Perbarui daftar sumber Anda.

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

Dapatkan paket 10gen.

sudo apt-get install mongodb-10gen

Kemudian pilih versi Anda jika Anda tidak menginginkan yang terbaru. Jika Anda mengatur lingkungan Anda di mesin windows 7 atau 8, jauhi v2.6 sampai mereka mengatasi beberapa bug dengan menjalankannya sebagai layanan.

apt-get install mongodb-10gen=2.4.9

Cegah versi penginstalan MongoDB Anda terganggu saat Anda memperbarui.

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

Mulai layanan MongoDB.

sudo service mongodb start

File database Anda default ke /var/lib/mongo dan file log Anda ke /var/log/mongo.

Buat database melalui mongo shell dan masukkan beberapa data dummy ke dalamnya.

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

Sekarang untuk Mengonversi MongoDB mandiri menjadi Set Replika.

Matikan dulu prosesnya.

mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()

Sekarang kami menjalankan MongoDB sebagai layanan, jadi kami tidak meneruskan opsi "--replSet rs0" di argumen baris perintah saat kami memulai ulang proses mongod. Sebagai gantinya, kami meletakkannya di file mongod.conf.

vi /etc/mongod.conf

Tambahkan baris ini, subbing untuk db dan jalur log Anda.

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

Sekarang buka shell mongo lagi untuk menginisialisasi set replika.

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.

Sekarang instal Elasticsearch. Saya hanya mengikuti Intisari yang bermanfaat ini.

Pastikan Java telah terinstal.

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

Tetap menggunakan v1.1.x untuk saat ini hingga bug plugin Mongo-River diperbaiki di 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

Pastikan /etc/elasticsearch/elasticsearch.yml mengaktifkan opsi konfigurasi berikut jika Anda hanya mengembangkan pada satu node untuk saat ini:

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

Mulai layanan Elasticsearch.

sudo service elasticsearch start

Pastikan itu berfungsi.

curl http://localhost:9200

Jika Anda melihat sesuatu seperti ini maka Anda baik-baik saja.

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

Sekarang instal plugin Elasticsearch agar dapat bermain dengan MongoDB.

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

Kedua plugin ini tidak diperlukan tetapi bagus untuk menguji kueri dan memvisualisasikan perubahan pada indeks Anda.

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

Mulai ulang Elasticsearch.

sudo service elasticsearch restart

Terakhir, indeks koleksi dari 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"
  }
}'

Periksa apakah indeks Anda ada di Elasticsearch

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

Periksa kesehatan cluster Anda.

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

Mungkin berwarna kuning dengan beberapa pecahan yang belum ditetapkan. Kami harus memberi tahu Elasticsearch apa yang ingin kami kerjakan.

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

Periksa kesehatan cluster lagi. Seharusnya sekarang hijau.

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

Pergi bermain.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $cond

  2. Kumpulan Mesin &Profil Cloud untuk MongoDB

  3. kelompokkan berdasarkan pertanyaan tentang koleksi meteor

  4. Masukkan Nilai pada Posisi Tertentu dalam Array di MongoDB

  5. Agregasi MongoDB di Loopback