Heim >Java >javaLernprogramm >Beispielcode für die Verwendung der leistungsstarken Elastisearch-Suchmaschine in Java
In diesem Artikel wird hauptsächlich der Beispielcode der leistungsstarken ElastisearchSuchmaschine vorgestellt. Interessierte können sich darüber informieren.
Elastisearch ist sehr leistungsstark und einfach -Zu verwendende Suchmaschine.Indexzum Ausführen von Elastisearch auf dem System sind nur die folgenden Schritte erforderlich:
1. Laden Sie Elastisearch herunter
Der Code lautet wie folgt:
2. Entpacken Siewget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.zip. Zu diesem Zeitpunkt kann es sein direkt aufgrund von Speicherüberlauf (OOM) getötet, elastisearch Der belegte Speicher ist sehr groß. Wenn Sie also auf einem Server mit relativ kleinem Speicher ausgeführt werden, müssen Sie zuerst die Speichergröße des JVM ändern
unzip elasticsearch-5.4.0.zipÄndern Sie die Stapelgröße der Zeilen 22 und 23 auf 512M
elasticsearch-5.4.0/bin/elasticsearchWenn es nach dem Neustart immer noch beendet wird, ändern Sie es auf einen kleineren WertOb der Test erfolgreich ist
vi elasticsearch-5.4.0/config/jvm.optionsSie können die folgenden Rückgabeinformationen sehen:
-Xms512M -Xmx512MEs zeigt an, dass der Start erfolgreich war
curl 'http://localhost:9200/?pretty'Als nächstes verwenden wir Javas
API
für den Betrieb Elasticsearch{ "status": 200, "name": "Shrunken Bones", "version": { "number": "1.4.0", "lucene_version": "4.10" }, "tagline": "You Know, for Search" }Importieren Sie zunächst die Pakete elastisearch und log4j
POMIm Folgenden sind einige häufig verwendete Vorgänge aufgeführt
1. Kunde erstellen<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jk</groupId> <artifactId>ElasticsearchExample</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <!--用哪个版本就填什么--> <version>5.4.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> </dependencies> </project>2. Index erstellen
Client client = null; try { client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); } catch (Exception e) { e.printStackTrace(); }3.
Daten einfügen
/** * 创建索引,有则先删除 * @param client */ private static void recreateIndex(Client client) { if (client.admin().indices().prepareExists(index).execute().actionGet() .isExists()) { DeleteIndexResponse deleteIndexResponse = client.admin().indices() .delete(new DeleteIndexRequest(index)).actionGet(); System.out.println("delete index :"); System.out.println(deleteIndexResponse); } CreateIndexResponse createIndexResponse = client.admin().indices() .prepareCreate(index).execute().actionGet(); System.out.println("create index :"); System.out.println(createIndexResponse); }
4.AbfrageAlle
/** * 插入数据 * @param client */ @SuppressWarnings({"rawtypes", "unchecked"}) private static void doIndex(final Client client) { Map s11 = new LinkedHashMap(); s11.put("title", "Think in java"); s11.put("origin", "美国"); s11.put("description", "初级java开发人员必读的书"); s11.put("author", "Bruce Eckel"); s11.put("price", 108); Map s12 = new LinkedHashMap(); s12.put("title", "Head First Java"); s12.put("origin", "英国"); s12.put("description", "java入门教材"); s12.put("author", "Kathy Sierra"); s12.put("price", 54); Map s21 = new LinkedHashMap(); s21.put("title", "Design Pattern"); s21.put("origin", "法国"); s21.put("description", "程序员不得不读的设计模式"); s21.put("author", "Kathy Sierra"); s21.put("price", 89); Map s22 = new LinkedHashMap(); s22.put("title", "黑客与画家"); s22.put("origin", "法国"); s22.put("description", "读完之后脑洞大开"); s22.put("author", "Paul Graham"); s22.put("price", 35); BulkResponse bulkResponse = client .prepareBulk() .add(client.prepareIndex(index, type).setId("11").setSource(s11).setOpType(IndexRequest.OpType.INDEX).request()) .add(client.prepareIndex(index, type).setId("12").setSource(s12).setOpType(IndexRequest.OpType.INDEX).request()) .add(client.prepareIndex(index, type).setId("21").setSource(s21).setOpType(IndexRequest.OpType.INDEX).request()) .add(client.prepareIndex(index, type).setId("22").setSource(s22).setOpType(IndexRequest.OpType.INDEX).request()) .execute().actionGet(); if (bulkResponse.hasFailures()) { System.err.println("index docs ERROR:" + bulkResponse.buildFailureMessage()); } else { System.out.println("index docs SUCCESS:"); System.out.println(bulkResponse); } }
/** * 查询所有 */ private static void searchAll(Client client) { SearchResponse response = client.prepareSearch(index) .setQuery(QueryBuilders.matchAllQuery()) .setExplain(true).execute().actionGet(); System.out.println("searchAll : "); for (SearchHit searchHit : response.getHits()) { System.out.println("********"); System.out.println(searchHit.getSource()); } }6. Wertebereichsfilterung
7. Schlüsselwörter hervorheben
/** * 关键词查询 * * @param client */ private static void searchKeyWord(Client client) { SearchResponse response = client.prepareSearch(index) //查询所有字段匹配关键字 .setQuery(QueryBuilders.matchQuery("_all", "法国")) //设置最小匹配程度 // .setQuery(QueryBuilders.matchQuery("_all", "法国").minimumShouldMatch("100%")) .execute().actionGet(); System.out.println("searchKeyWord : "); System.out.println(response); }
9. Suche nach ID
/** * 数值范围过滤 * * @param client */ private static void searchRange(Client client) { SearchResponse response = client.prepareSearch(index). //大于80,小于100 setQuery(QueryBuilders.rangeQuery("price").gt(80).lt(100)) .execute() .actionGet(); System.out.println("searchRange : "); System.out.println(response); }
10 🎜>11.
Update/** * 排序 * * @param client */ private static void searchOrdered(Client client) { SearchResponse response = client.prepareSearch(index) .setQuery(QueryBuilders.matchAllQuery()) //根据价格降序排序 .addSort(SortBuilders.fieldSort("price") .order(SortOrder.DESC)).execute().actionGet(); System.out.println("searchOrdered : "); System.out.println(response); }
Das obige ist der detaillierte Inhalt vonBeispielcode für die Verwendung der leistungsstarken Elastisearch-Suchmaschine in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!