Rumah >Java >javaTutorial >Menggunakan Elasticsearch untuk carian data dalam pembangunan API Java
Dengan perkembangan pesat teknologi Internet, skala dan kerumitan aplikasi moden semakin meningkat, dan aplikasi ini biasanya melibatkan sejumlah besar carian dan analisis data. Untuk menyelesaikan masalah ini, semakin ramai pembangun mula menggunakan enjin carian teks penuh untuk membantu mereka memproses data besar-besaran.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan Elasticsearch untuk carian data, dan untuk aplikasi dalam proses pembangunan API Java, kami akan memperkenalkan antara muka API yang disediakan oleh Elasticsearch, serta proses dan teknik pelaksanaan .
Elasticsearch ialah enjin carian teks penuh sumber terbuka yang dibina pada perpustakaan carian teks enjin carian Apache Lucene. Elasticsearch mempunyai ciri-ciri teragih, ketersediaan tinggi, carian masa nyata dan analisis Ia boleh menyimpan, mendapatkan semula dan menganalisis sejumlah besar data dengan cepat. Dalam senario carian data, Elasticsearch ialah penyelesaian yang sangat popular dan digunakan secara meluas kerana ia menyediakan antara muka API yang berkuasa dan mudah digunakan yang boleh disepadukan dengan cepat ke dalam aplikasi Java.
Apabila menggunakan Elasticsearch untuk carian data, terdapat beberapa konsep dan istilah asas yang perlu anda fahami:
(1 ) Indeks
Dalam Elasticsearch, indeks ialah bekas logik yang digunakan untuk menyimpan data, yang serupa dengan jadual dalam pangkalan data hubungan. Setiap indeks boleh mengandungi berbilang dokumen dan setiap dokumen ialah struktur data dalam format JSON.
(2) Taip
Dalam Elasticsearch, setiap indeks boleh mengandungi berbilang jenis (jenis), dan setiap jenis boleh menentukan medannya sendiri. Jenis telah ditamatkan dalam versi terkini Elasticsearch, tetapi masih digunakan sebagai pemilih dalam sesetengah API.
(3) Sharing dan replika
Dalam Elasticsearch, indeks boleh dibahagikan kepada berbilang serpihan (serpihan), dan setiap serpihan ialah indeks Lucene bebas. Sharding mengedarkan dan menyimpan data yang diindeks pada berbilang pelayan untuk mencapai storan dan pertanyaan yang diedarkan. Selain itu, Elasticsearch juga menyokong replika. Setiap serpihan boleh mempunyai berbilang replika untuk meningkatkan prestasi carian dan ketersediaan data.
(4) Nod dan kelompok
Elasticsearch ialah enjin carian teragih yang boleh berjalan pada berbilang nod. Nod ialah contoh Elasticsearch tunggal, dan keseluruhan kluster terdiri daripada berbilang nod. Nod boleh berkomunikasi antara satu sama lain dan bekerjasama untuk menyelesaikan tugas carian.
Elasticsearch menyediakan antara muka Java API yang kaya yang boleh disepadukan dengan mudah dengan aplikasi Java. Pembangun Java boleh menggunakan API berikut untuk pengindeksan, pertanyaan dan pengurusan data:
(1) API Indeks
API Indeks digunakan untuk mengindeks dokumen dalam format JSON ke dalam indeks Elasticsearch yang ditentukan. Ia menyokong pengindeksan kelompok, yang boleh mengindeks berbilang dokumen ke dalam indeks yang sama sekaligus.
(2) API Carian
API Carian digunakan untuk melaksanakan operasi carian ia menyokong pelbagai kaedah carian, termasuk carian teks penuh, carian medan, carian kabur, dsb.
(3) Padam API
Padam API digunakan untuk memadam indeks Elasticsearch yang ditentukan.
(4) Get API
Get API digunakan untuk mendapatkan dokumen berdasarkan indeks, jenis dan ID yang ditentukan.
(5) API Kemas Kini
API Kemas Kini digunakan untuk mengemas kini dokumen yang ditentukan.
Selain itu, Elasticsearch juga menyediakan banyak antara muka API lain, termasuk carian lokasi geografi, penonjolan teks, pengagregatan, dsb.
Sebelum menggunakan Elasticsearch untuk carian data, anda perlu memasang Elasticsearch dan mulakannya. Kemudian gunakan API Java untuk menyambung ke pelayan Elasticsearch, buat indeks dan tambah data pada indeks. Seterusnya, anda boleh mencari menggunakan API Carian. Berikut ialah contoh kod Java asas:
import java.net.InetAddress; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.transport.client.PreBuiltTransportClient; public class ElasticsearchSearchDemo { public static void main(String[] args) throws Exception { // 设置集群名称 Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build(); // 创建客户端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300)); // 搜索数据 SearchResponse response = client.prepareSearch("books") .setQuery(QueryBuilders.matchQuery("title", "Java")) .get(); // 打印结果 for (SearchHit hit : response.getHits().getHits()) { System.out.println(hit.getSourceAsString()); } // 关闭客户端 client.close(); } }
Kod di atas mencipta objek TransportClient, menyambung kepada perkhidmatan Elasticsearch tempatan dan menggunakan kaedah prepareSearch untuk melaksanakan operasi pertanyaan. Operasi pertanyaan ini melakukan carian kabur pada medan tajuk indeks buku dan mengeluarkan hasil carian.
Dalam era data hari ini, permintaan untuk carian dan analisis data semakin meningkat. Sebagai enjin carian teks penuh yang berkuasa, Elasticsearch mempunyai kelebihan pengedaran, ketersediaan tinggi, carian masa nyata dan analisis. Dalam senario pembangunan API Java, Elasticsearch menyediakan antara muka API yang kaya dan mudah digunakan, menyediakan pembangun dengan keupayaan carian data yang mudah. Saya harap artikel ini dapat membantu pembangun Java menggunakan Elasticsearch dengan lebih baik untuk carian data.
Atas ialah kandungan terperinci Menggunakan Elasticsearch untuk carian data dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!