Saya telah menelusuri banyak blog dan situs tentang mengonfigurasi Elasticsearch untuk MongoDB untuk mengindeks Koleksi di MongoDB tetapi tidak ada satupun yang langsung.
Tolong jelaskan kepada saya proses langkah demi langkah untuk menginstal elasticsearch, yang harus mencakup:
- konfigurasi
- dijalankan di browser
Saya menggunakan Node.js dengan express.js, jadi tolong bantu.
mongodb
elasticsearch
bibin david
sumber
sumber
Jawaban:
Jawaban ini seharusnya cukup untuk membuat Anda mengatur untuk mengikuti tutorial ini tentang Membangun komponen pencarian fungsional dengan MongoDB, Elasticsearch, dan AngularJS .
Jika Anda ingin menggunakan pencarian faceted dengan data dari API maka Repo BirdWatch Matthiasn adalah sesuatu yang mungkin ingin Anda lihat.
Jadi, inilah cara Anda dapat menyiapkan satu simpul Elasticsearch "cluster" untuk mengindeks MongoDB untuk digunakan dalam aplikasi NodeJS, Express pada contoh EC2 Ubuntu 14.04 yang baru.
Pastikan semuanya sudah terbaru.
Instal NodeJS.
Instal MongoDB - Langkah-langkah ini langsung dari MongoDB docs. Pilih versi apa pun yang Anda sukai. Saya bertahan dengan v2.4.9 karena tampaknya itu adalah versi terbaru dukungan MongoDB-River tanpa masalah.
Impor Kunci GPG MongoDB publik.
Perbarui daftar sumber Anda.
Dapatkan paket 10gen.
Kemudian pilih versi Anda jika Anda tidak menginginkan yang terbaru. Jika Anda mengatur lingkungan Anda pada mesin windows 7 atau 8 tinggal jauh dari v2.6 sampai mereka menyelesaikan beberapa bug dengan menjalankannya sebagai layanan.
Cegah agar versi instalasi MongoDB Anda tidak terbentur saat Anda memperbarui.
Mulai layanan MongoDB.
File database Anda secara default adalah / var / lib / mongo dan file log Anda ke / var / log / mongo.
Buat database melalui mongo shell dan dorong beberapa data dummy ke dalamnya.
Sekarang untuk Mengkonversi MongoDB mandiri menjadi Set Replika .
Pertama, Matikan proses.
Sekarang kita menjalankan MongoDB sebagai layanan, jadi kita tidak meneruskan opsi "--replSet rs0" di argumen baris perintah ketika kita me-restart proses mongod. Sebagai gantinya, kami memasukkannya ke file mongod.conf.
Tambahkan baris ini, subbing untuk jalur db dan log Anda.
Sekarang buka mongo shell lagi untuk menginisialisasi set replika.
Sekarang instal Elasticsearch. Saya hanya mengikuti intisari bermanfaat ini .
Pastikan Java sudah diinstal.
Tetap menggunakan v1.1.x untuk saat ini sampai bug plugin Sungai Mongo diperbaiki di v1.2.1.
Pastikan /etc/elasticsearch/elasticsearch.yml mengaktifkan opsi konfigurasi berikut jika Anda hanya mengembangkan satu node untuk saat ini:
Mulai layanan Elasticsearch.
Verifikasi itu berfungsi.
Jika Anda melihat sesuatu seperti ini maka Anda baik-baik saja.
Sekarang instal plugin Elasticsearch sehingga bisa bermain dengan MongoDB.
Kedua plugin ini tidak perlu tetapi mereka bagus untuk menguji kueri dan memvisualisasikan perubahan pada indeks Anda.
Mulai kembali Elasticsearch.
Akhirnya indeks koleksi dari MongoDB.
Periksa apakah indeks Anda ada di Elasticsearch
Periksa kesehatan cluster Anda.
Mungkin berwarna kuning dengan beberapa pecahan yang belum ditetapkan. Kita harus memberi tahu Elasticsearch apa yang ingin kita kerjakan.
Periksa kesehatan cluster lagi. Seharusnya berwarna hijau sekarang.
Pergi bermain.
sumber
Menggunakan sungai dapat menimbulkan masalah saat operasi Anda ditingkatkan. River akan menggunakan banyak memori saat dioperasikan. Saya sarankan menerapkan model elasticsearch Anda sendiri, atau jika Anda menggunakan luwak Anda dapat membangun model elasticsearch itu atau menggunakan mongoosastic yang pada dasarnya melakukan ini untuk Anda.
Kerugian lain dari Sungai Mongodb adalah Anda akan terjebak menggunakan cabang mongodb 2.4.x, dan ElasticSearch 0.90.x. Anda akan mulai menemukan bahwa Anda kehilangan banyak fitur yang sangat bagus, dan proyek mongodb river tidak menghasilkan produk yang dapat digunakan dengan cukup cepat untuk menjaga stabilitas. Yang mengatakan Sungai Mongodb jelas bukan sesuatu yang akan saya produksi. Ini menimbulkan lebih banyak masalah daripada nilainya. Itu akan secara acak menjatuhkan menulis di bawah beban berat, itu akan mengkonsumsi banyak memori, dan tidak ada pengaturan untuk membatasi itu. Selain itu, sungai tidak memperbarui dalam waktu nyata, ia membaca oplog dari mongodb, dan ini dapat menunda pembaruan selama 5 menit dalam pengalaman saya.
Kami baru-baru ini harus menulis ulang sebagian besar dari proyek kami, karena ini merupakan kejadian mingguan bahwa ada yang tidak beres dengan ElasticSearch. Kami bahkan sudah menyewa konsultan Dev Ops, yang juga setuju bahwa yang terbaik adalah menjauh dari River.
MEMPERBARUI: Elasticsearch-mongodb-river sekarang mendukung ES v1.4.0 dan mongodb v2.6.x. Namun, Anda mungkin masih akan mengalami masalah kinerja pada operasi penyisipan / pembaruan berat karena plugin ini akan mencoba membaca oplog mongodb untuk disinkronkan. Jika ada banyak operasi sejak penguncian (atau kait lebih tepatnya) terbuka, Anda akan melihat penggunaan memori yang sangat tinggi pada server elasticsearch Anda. Jika Anda berencana memiliki operasi besar, sungai bukanlah pilihan yang baik. Pengembang ElasticSearch masih menyarankan Anda untuk mengelola indeks Anda sendiri dengan berkomunikasi langsung dengan API mereka menggunakan perpustakaan klien untuk bahasa Anda, daripada menggunakan sungai. Ini sebenarnya bukan tujuan dari sungai. Twitter-sungai adalah contoh yang bagus tentang bagaimana sungai harus digunakan. Ini pada dasarnya cara yang bagus untuk sumber data dari sumber luar,
Juga pertimbangkan bahwa mongodb-river tertinggal dalam versi, karena tidak dikelola oleh ElasticSearch Organization, dikelola oleh pihak ketiga. Pengembangan macet di cabang v0.90 untuk waktu yang lama setelah rilis v1.0, dan ketika versi untuk v1.0 dirilis itu tidak stabil sampai elasticsearch merilis v1.3.0. Versi Mongodb juga ketinggalan. Anda mungkin menemukan diri Anda berada di tempat yang sempit ketika Anda mencari untuk pindah ke versi selanjutnya dari masing-masing, terutama dengan ElasticSearch di bawah pengembangan yang berat, dengan banyak fitur yang sangat diantisipasi di jalan. Tetap menggunakan ElasticSearch terbaru sangat penting karena kami sangat bergantung pada peningkatan fungsionalitas pencarian kami sebagai bagian inti dari produk kami.
Semua dalam semua kemungkinan Anda akan mendapatkan produk yang lebih baik jika Anda melakukannya sendiri. Tidak terlalu sulit. Ini hanya database lain untuk dikelola dalam kode Anda, dan dapat dengan mudah dimasukkan ke model yang ada tanpa refactoring besar.
sumber
not_analyzed
, jika tidak, Anda akan kesulitan untuk menanyakannya, lakukan seperti cara bidang yang dianalisis diberi tokenized.Saya menemukan konektor mongo berguna. Ini adalah bentuk Mongo Labs (MongoDB Inc.) dan dapat digunakan sekarang dengan Elasticsearch 2.x
Manajer dokumen 2.x elastis: https://github.com/mongodb-labs/elastic2-doc-manager
mongo-connector membuat pipa dari cluster MongoDB ke satu atau lebih sistem target, seperti Solr, Elasticsearch, atau cluster MongoDB lainnya. Ini menyinkronkan data dalam MongoDB ke target kemudian mengikuti oplog MongoDB, mengikuti operasi di MongoDB secara real-time. Ini telah diuji dengan Python 2.6, 2.7, dan 3.3+. Dokumentasi terperinci tersedia di wiki.
https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch
sumber
River adalah solusi yang baik setelah Anda ingin sinkronisasi dan solusi umum yang hampir real time.
Jika Anda sudah memiliki data dalam MongoDB dan ingin mengirimkannya dengan sangat mudah ke Elasticsearch seperti "one-shot", Anda dapat mencoba paket saya di Node.js https://github.com/itemsapi/elasticbulk .
Menggunakan aliran Node.js sehingga Anda dapat mengimpor data dari semua yang mendukung aliran (yaitu MongoDB, PostgreSQL, MySQL, file JSON, dll)
Contoh untuk MongoDB ke Elasticsearch:
Instal paket:
Buat skrip yaitu script.js:
Kirimkan data Anda:
Ini tidak terlalu cepat tetapi bekerja untuk jutaan rekaman (berkat stream).
sumber
Di sini bagaimana melakukan ini di mongodb 3.0. Saya menggunakan blog yang bagus ini
Tes di browser:
http: // localhost: 9200 / _search? q = rumah
sumber
Di sini saya menemukan opsi bagus lain untuk memigrasikan data MongoDB Anda ke Elasticsearch. Daemon go yang menyinkronkan mongodb ke elasticsearch secara realtime. Ini Monstache. Ini tersedia di: Monstache
Di bawah setp awal untuk mengonfigurasi dan menggunakannya.
Langkah 1:
Langkah 2 :
Langkah 3: Verifikasi replikasi.
Langkah 4. Unduh " https://github.com/rwynn/monstache/releases ". Buka zip unduhan dan sesuaikan variabel PATH Anda untuk memasukkan path ke folder untuk platform Anda.
"monstache -v"
Pergi ke cmd dan ketik # 4.13.1 Monstache menggunakan format TOML untuk konfigurasinya. Konfigurasikan file untuk migrasi dengan nama config.tomlLangkah 5.
Config.toml saya ->
Langkah 6.
sumber
Karena konektor mongo sekarang tampak mati, perusahaan saya memutuskan untuk membangun alat untuk menggunakan aliran perubahan Mongo ke output ke Elasticsearch.
Hasil awal kami terlihat menjanjikan. Anda dapat memeriksanya di https://github.com/electionsexperts/mongo-stream . Kami masih awal dalam pengembangan, dan akan menerima saran atau kontribusi.
sumber