Heim >Java >javaLernprogramm >Beispielcode für die Verwendung der leistungsstarken Elastisearch-Suchmaschine in Java

Beispielcode für die Verwendung der leistungsstarken Elastisearch-Suchmaschine in Java

黄舟
黄舟Original
2017-05-21 10:17:471845Durchsuche

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 Sie

wget 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/elasticsearch
Wenn es nach dem Neustart immer noch beendet wird, ändern Sie es auf einen kleineren Wert

Ob der Test erfolgreich ist
vi elasticsearch-5.4.0/config/jvm.options

Sie können die folgenden Rückgabeinformationen sehen:
-Xms512M
-Xmx512M

Es 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);
    }
  }

5. Schlüsselwortabfrage

  /**
   * 查询所有
   */
  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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn