国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式搜索引擎ElasticSearch——基礎(chǔ)

這篇具有很好參考價值的文章主要介紹了分布式搜索引擎ElasticSearch——基礎(chǔ)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

分布式搜索引擎ElasticSearch——基礎(chǔ)


分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

初識elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

什么是elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

elasticsearch的發(fā)展

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

https://lucene.apache.org/
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
https://www.elastic.co/cn/
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

正向索引和倒排索引

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

安裝elasticsearch,kibana

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
https://github.com/medcl/elasticsearch-analysis-ik

部署單點es
創(chuàng)建網(wǎng)絡(luò)

因為我們還需要部署kibana容器,因此需要讓es和kibana容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò):

docker network create es-net
加載鏡像

這里我們采用elasticsearch的7.12.1版本的鏡像,這個鏡像體積非常大,接近1G。不建議大家自己pull。網(wǎng)速沒問題的話,直接去pull也沒問題只要記得指定版本為7.12.1即可(學(xué)習(xí)教學(xué)方便)

課前資料提供了鏡像的tar包:

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
大家將其上傳到虛擬機中,然后運行命令加載即可:

# 導(dǎo)入數(shù)據(jù)
docker load -i es.tar

同理還有kibana的tar包也需要這樣做。同理kibana也可以直接去pull

運行

運行docker命令,部署單點es:

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解釋:

  • -e "cluster.name=es-docker-cluster":設(shè)置集群名稱
  • -e "http.host=0.0.0.0":監(jiān)聽的地址,可以外網(wǎng)訪問
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":內(nèi)存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:掛載邏輯卷,綁定es的數(shù)據(jù)目錄
  • -v es-logs:/usr/share/elasticsearch/logs:掛載邏輯卷,綁定es的日志目錄
  • -v es-plugins:/usr/share/elasticsearch/plugins:掛載邏輯卷,綁定es的插件目錄
  • --privileged:授予邏輯卷訪問權(quán)
  • --network es-net :加入一個名為es-net的網(wǎng)絡(luò)中
  • -p 9200:9200:端口映射配置

在瀏覽器中輸入:http://192.168.150.101:9200 即可看到elasticsearch的響應(yīng)結(jié)果:

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

部署kibana

kibana可以給我們提供一個elasticsearch的可視化界面,便于我們學(xué)習(xí)。

部署

運行docker命令,部署kibana

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1
  • --network es-net :加入一個名為es-net的網(wǎng)絡(luò)中,與elasticsearch在同一個網(wǎng)絡(luò)中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":設(shè)置elasticsearch的地址,因為kibana已經(jīng)與elasticsearch在一個網(wǎng)絡(luò),因此可以用容器名直接訪問elasticsearch
  • -p 5601:5601:端口映射配置

kibana啟動一般比較慢,需要多等待一會,可以通過命令:

docker logs -f kibana

查看運行日志,當(dāng)查看到下面的日志,說明成功:

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

此時,在瀏覽器輸入地址訪問:http://192.168.150.101:5601,即可看到結(jié)果

DevTools

kibana中提供了一個DevTools界面:
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

安裝IK分詞器

在線安裝ik插件(較慢)
# 進入容器內(nèi)部
docker exec -it es /bin/bash

# 在線下載并安裝
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重啟容器
docker restart elasticsearch
離線安裝ik插件(推薦)
1)查看數(shù)據(jù)卷目錄

安裝插件需要知道elasticsearch的plugins目錄位置,而我們用了數(shù)據(jù)卷掛載,因此需要查看elasticsearch的數(shù)據(jù)卷目錄,通過下面命令查看:

docker volume inspect es-plugins

顯示結(jié)果:

[
    {
        "CreatedAt": "2022-05-06T10:06:34+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
        "Name": "es-plugins",
        "Options": null,
        "Scope": "local"
    }
]

說明plugins目錄被掛載到了:/var/lib/docker/volumes/es-plugins/_data 這個目錄中。

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

也就是/var/lib/docker/volumes/es-plugins/_data
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

4)重啟容器
# 4、重啟容器
docker restart es
# 查看es日志
docker logs -f es
5)測試:

IK分詞器包含兩種模式:

  • ik_smart:最少切分

  • ik_max_word:最細切分

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "黑馬程序員學(xué)習(xí)java太棒了"
}

結(jié)果:

{
  "tokens" : [
    {
      "token" : "黑馬",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "程序員",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "程序",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "員",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 3
    },
    {
      "token" : "學(xué)習(xí)",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "java",
      "start_offset" : 7,
      "end_offset" : 11,
      "type" : "ENGLISH",
      "position" : 5
    },
    {
      "token" : "太棒了",
      "start_offset" : 11,
      "end_offset" : 14,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "太棒",
      "start_offset" : 11,
      "end_offset" : 13,
      "type" : "CN_WORD",
      "position" : 7
    },
    {
      "token" : "了",
      "start_offset" : 13,
      "end_offset" : 14,
      "type" : "CN_CHAR",
      "position" : 8
    }
  ]
}
擴展詞詞典

隨著互聯(lián)網(wǎng)的發(fā)展,“造詞運動”也越發(fā)的頻繁。出現(xiàn)了很多新的詞語,在原有的詞匯列表中并不存在。比如:“奧力給”,“傳智播客” 等。

所以我們的詞匯也需要不斷的更新,IK分詞器提供了擴展詞匯的功能。

1)打開IK分詞器config目錄:
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

2)在IKAnalyzer.cfg.xml配置文件內(nèi)容添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 擴展配置</comment>
        <!--用戶可以在這里配置自己的擴展字典 *** 添加擴展詞典-->
        <entry key="ext_dict">ext.dic</entry>
</properties>

3)新建一個 ext.dic,可以參考config目錄下復(fù)制一個配置文件進行修改

傳智播客
奧力給

4)重啟elasticsearch

docker restart es

# 查看 日志
docker logs -f elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

日志中已經(jīng)成功加載ext.dic配置文件

5)測試效果:

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "傳智播客Java就業(yè)超過90%,奧力給!"
}

注意當(dāng)前文件的編碼必須是 UTF-8 格式,嚴禁使用Windows記事本編輯

停用詞詞典

在互聯(lián)網(wǎng)項目中,在網(wǎng)絡(luò)間傳輸?shù)乃俣群芸欤院芏嗾Z言是不允許在網(wǎng)絡(luò)上傳遞的,如:關(guān)于宗教、政治等敏感詞語,那么我們在搜索時也應(yīng)該忽略當(dāng)前詞匯。

IK分詞器也提供了強大的停用詞功能,讓我們在索引時就直接忽略當(dāng)前的停用詞匯表中的內(nèi)容。

1)IKAnalyzer.cfg.xml配置文件內(nèi)容添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 擴展配置</comment>
        <!--用戶可以在這里配置自己的擴展字典-->
        <entry key="ext_dict">ext.dic</entry>
         <!--用戶可以在這里配置自己的擴展停止詞字典  *** 添加停用詞詞典-->
        <entry key="ext_stopwords">stopword.dic</entry>
</properties>

3)在 stopword.dic 添加停用詞

停用詞

4)重啟elasticsearch

# 重啟服務(wù)
docker restart elasticsearch
docker restart kibana

# 查看 日志
docker logs -f elasticsearch

日志中已經(jīng)成功加載stopword.dic配置文件

5)測試效果:

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "傳智播客Java就業(yè)率超過95%,停用詞都點贊,奧力給!"
}

注意當(dāng)前文件的編碼必須是 UTF-8 格式,嚴禁使用Windows記事本編輯

部署es集群

部署es集群可以直接使用docker-compose來完成,不過要求你的Linux虛擬機至少有4G的內(nèi)存空間

首先編寫一個docker-compose文件,內(nèi)容如下:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

Run docker-compose to bring up the cluster:

docker-compose up

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

索引庫操作

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

mapping屬性

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

創(chuàng)建索引庫

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

查詢,刪除索引庫

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

修改索引庫——添加字段

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

文檔操作

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

添加文檔

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

查看、刪除文檔

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

修改文檔

全量修改如果傳的id不存在,就直接成為新增了。
增量修改就是局部修改。
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

文檔操作——動態(tài)映射

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

RestClient操作索引庫

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
https://www.elastic.co/guide/en/elasticsearch/client/index.html

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

public class HotelIndexTest {
    private RestHighLevelClient client;

    @Test
    void testInit(){
        System.out.println(client);
    }

//    創(chuàng)建索引庫
    @Test
    void createHotelIndex() throws IOException {
        // 1. 創(chuàng)建request對象
        CreateIndexRequest request = new CreateIndexRequest("hotel");
        // 2. 準備請求的參數(shù):DSL語句
        request.source(MAPPING_TEMPLATE, XContentType.JSON);
        // 3. 發(fā)送請求
        client.indices().create(request, RequestOptions.DEFAULT);
    }

//    刪除索引庫
    @Test
    void testDDeleteHotelIndex() throws IOException {
        // 1. 創(chuàng)建Request對象
        DeleteIndexRequest request = new DeleteIndexRequest("hotel");
        // 2. 發(fā)送請求
        client.indices().delete(request,RequestOptions.DEFAULT);
    }


//    判斷是否存在索引庫
    @Test
    void testExistsHotelIndex() throws IOException {
        // 1. 創(chuàng)建Request對象
        GetIndexRequest request = new GetIndexRequest("hotel");
        // 2. 發(fā)送請求
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        // 3. 輸出
        System.out.println(exists ? "索引庫已經(jīng)存在": "索引庫不存在!");
    }



    @BeforeEach
    void setUp(){
        this.client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.10.88:9200")
        ));
    }

    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }
}

public class HotelConstants {
    public static final String MAPPING_TEMPLATE = "{\n" +
            "  \"mappings\": {\n" +
            "    \"properties\": {\n" +
            "      \"id\": {\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"name\": {\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_max_word\",\n" +
            "        \"copy_to\": \"{all}\"\n" +
            "      },\n" +
            "      \"address\": {\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"price\": {\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"score\": {\n" +
            "        \"type\": \"integer\"\n" +
            "      },\n" +
            "      \"brand\": {\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"copy_to\": \"{all}\"\n" +
            "      },\n" +
            "      \"city\": {\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"starName\": {\n" +
            "        \"type\": \"keyword\"\n" +
            "      },\n" +
            "      \"business\": {\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"copy_to\": \"{all}\"\n" +
            "      },\n" +
            "      \"location\": {\n" +
            "        \"type\": \"geo_point\"\n" +
            "      },\n" +
            "      \"pic\": {\n" +
            "        \"type\": \"keyword\",\n" +
            "        \"index\": false\n" +
            "      },\n" +
            "      \"all\": {\n" +
            "        \"type\": \"text\",\n" +
            "        \"analyzer\": \"ik_max_word\"\n" +
            "      }\n" +
            "    }\n" +
            "    \n" +
            "  }\n" +
            "}";
}

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

RestClient操作文檔

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch
分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

@SpringBootTest
public class HotelDocumentTest {
    private RestHighLevelClient client;

    @Autowired
    private IHotelService hotelService;
//    添加酒店數(shù)據(jù)到索引庫
    @Test
    void testAddDocument() throws IOException {
        // 根據(jù)id查詢酒店數(shù)據(jù)
        Hotel hotel = hotelService.getById(61083L);
        // 轉(zhuǎn)換為文檔類型
        HotelDoc hotelDoc = new HotelDoc(hotel);
        // 1. 準備Request對象
        IndexRequest request = new IndexRequest("hotel").id(hotel.getId().toString());

        // 2. 準備json文檔
        request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);
        // 3. 發(fā)送文檔
        client.index(request,RequestOptions.DEFAULT);
    }

    // 根據(jù)id查詢酒店數(shù)據(jù)
    @Test
    void testGetDocumentById() throws IOException {
        // 1. 準備Request
        GetRequest request = new GetRequest("hotel", "61083");
        // 2. 發(fā)送請求,得到響應(yīng)
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        // 3. 解析響應(yīng)結(jié)果
        String json = response.getSourceAsString();
        HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
        System.out.println(hotelDoc);
    }

    // 根據(jù)id修改酒店數(shù)據(jù)
    @Test
    void testUpdateDocument() throws IOException {
        // 1. 準備request
        UpdateRequest request = new UpdateRequest("hotel", "61083");
        // 2. 準備請求參數(shù)
        request.doc(
                "price", "998",
                "starName", "四鉆"
        );
        // 3. 發(fā)送請求
        client.update(request, RequestOptions.DEFAULT);
    }

    // 根據(jù)id刪除文檔數(shù)據(jù)
    @Test
    void testDeleteDocument() throws IOException {
        // 1. 準備request
        DeleteRequest request = new DeleteRequest("hotel", "61083");
        // 2. 發(fā)送請求
        client.delete(request, RequestOptions.DEFAULT);
    }



    @BeforeEach
    void setUp(){
        this.client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.10.88:9200")
        ));
    }

    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }
}

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch

利用JavaRestClient批量導(dǎo)入酒店數(shù)據(jù)到ES

分布式搜索引擎ElasticSearch——基礎(chǔ),搜索引擎,分布式,elasticsearch文章來源地址http://www.zghlxwxcb.cn/news/detail-797949.html

    // 批量添加
    @Test
    void testBulkRequest() throws IOException {
        // 批量查詢酒店數(shù)據(jù)
        List<Hotel> hotels = hotelService.list();
        // 1. 創(chuàng)建Request
        BulkRequest request = new BulkRequest();
        // 2.  轉(zhuǎn)杯參數(shù),添加多個新增的Request
        for (Hotel hotel : hotels) {
            // 轉(zhuǎn)換為文檔類型HotelDoc
            HotelDoc hotelDoc = new HotelDoc(hotel);
            request.add(new IndexRequest("hotel")
                    .id(hotelDoc.getId().toString())
                    .source(JSON.toJSONString(hotelDoc),XContentType.JSON));
        }
        // 3. 發(fā)送請求
        client.bulk(request,  RequestOptions.DEFAULT);
    }

到了這里,關(guān)于分布式搜索引擎ElasticSearch——基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 分布式搜索引擎ElasticSearch——基礎(chǔ)

    分布式搜索引擎ElasticSearch——基礎(chǔ)

    什么是elasticsearch elasticsearch的發(fā)展 https://lucene.apache.org/ https://www.elastic.co/cn/ 正向索引和倒排索引 安裝elasticsearch,kibana https://github.com/medcl/elasticsearch-analysis-ik 部署單點es 創(chuàng)建網(wǎng)絡(luò) 因為我們還需要部署kibana容器,因此需要讓es和kibana容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò): 加載鏡像

    2024年01月17日
    瀏覽(33)
  • 分布式搜索引擎-elasticsearch基礎(chǔ)

    分布式搜索引擎-elasticsearch基礎(chǔ)

    elasticsearch是一款非常強大的開源搜索引擎,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容。 elasticsearch結(jié)合kibana、Logstash、Beats,也就是elastic stack(ELK)。被廣泛應(yīng)用在 日志數(shù)據(jù)分析 、 實時監(jiān)控 等領(lǐng)域。 elasticsearch是elastic stack的核心,負責(zé)存儲、搜索、分析數(shù)據(jù)。 Lucen

    2024年03月20日
    瀏覽(30)
  • 分布式搜索引擎elasticsearch(一)

    分布式搜索引擎elasticsearch(一)

    elasticsearch是一款非常強大的開源搜索引擎,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容。 elasticsearch是elastic stack的核心,負責(zé)存儲、搜索、分析數(shù)據(jù)。 文檔(document):每條數(shù)據(jù)就是一個文檔 詞條(term):文檔按照語義分成的詞語 倒排索引中包含兩部分內(nèi)容: 詞條詞

    2024年02月02日
    瀏覽(29)
  • # 分布式搜索引擎-- elasticsearch基礎(chǔ)

    # 分布式搜索引擎-- elasticsearch基礎(chǔ)

    elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容,,可以用來實現(xiàn)搜索、日志統(tǒng)計、分析、系統(tǒng)監(jiān)控等功能 ? ?是以elasticsearch為核心的技術(shù)棧,都包括: ElasticSearch(存儲,計算,搜索數(shù)據(jù)) kibana(數(shù)據(jù)可視化) Logstas

    2024年03月27日
    瀏覽(31)
  • Elasticsearch 分布式搜索引擎 速學(xué)

    Elasticsearch 分布式搜索引擎 速學(xué)

    ????????elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容,它結(jié)合kibana、Logstash、Beats,也就是elastic stack(ELK)。它被廣泛應(yīng)用在日志數(shù)據(jù)分析、實時監(jiān)控等領(lǐng)域,而elasticsearch是elastic stack的核心,負責(zé)存儲

    2024年02月03日
    瀏覽(18)
  • 分布式搜索引擎ElasticSearch——深入elasticSearch

    分布式搜索引擎ElasticSearch——深入elasticSearch

    聚合的分類 DSL實現(xiàn)Bucket聚合 DSL實現(xiàn)Metric聚合 RestAPI實現(xiàn)聚合 https://github.com/medcl/elasticsearch-analysis-pinyin DSL實現(xiàn)自動補全查詢 Completion Suggester 修改酒店索引庫數(shù)據(jù)結(jié)構(gòu) RestAPI實現(xiàn)自動補全查詢 實現(xiàn)酒店搜索頁面輸入框的自動補全 數(shù)據(jù)同步思路分析 利用MQ實現(xiàn)mysql與elasticsearch數(shù)

    2024年01月17日
    瀏覽(55)
  • Elasticsearch 分布式全文搜索引擎原理解析

    作者:禪與計算機程序設(shè)計藝術(shù) Elasticsearch是一個開源的分布式全文搜索引擎,它可以近實時地存儲、檢索數(shù)據(jù)。本系列文章將從以下幾個方面對Elasticsearch進行深入分析: Elasticsearch的主要組成部分 索引、類型和映射(Mapping) 搜索請求處理流程 查詢緩存機制 Elasticsearch集群

    2024年02月05日
    瀏覽(31)
  • 微服務(wù)---分布式搜索引擎 elasticsearch基礎(chǔ)

    微服務(wù)---分布式搜索引擎 elasticsearch基礎(chǔ)

    1.1.1.elasticsearch的作用 elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容 例如: 在GitHub搜索代碼 在電商網(wǎng)站搜索商品 在百度搜索答案 在打車軟件搜索附近的車 1.1.2.ELK技術(shù)棧 elasticsearch結(jié)合kibana、Logstash、Beats,

    2024年02月04日
    瀏覽(30)
  • 分布式搜索引擎Elasticsearch基礎(chǔ)入門學(xué)習(xí)

    分布式搜索引擎Elasticsearch基礎(chǔ)入門學(xué)習(xí)

    Elasticsearh 是 elastic.co 公司開發(fā)的分布式搜索引擎。 Elasticsearch(簡稱ES)是一個開源的分布式、高度可擴展的全文搜索和分析引擎。它能夠快速、近乎實時的存儲、搜索和分析大量數(shù)據(jù)。適用于包括文本、數(shù)字、地理空間、結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)等在內(nèi)的所有類型數(shù)據(jù)。 它通

    2024年02月03日
    瀏覽(37)
  • ElasticSearch分布式搜索引擎(兩萬字詳解)

    ElasticSearch分布式搜索引擎(兩萬字詳解)

    elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容 elasticsearch結(jié)合kibana、Logstash、Beats,也就是elastic stack(ELK)。被廣泛應(yīng)用在日志數(shù)據(jù)分析、實時監(jiān)控等領(lǐng)域: 而elasticsearch是elastic stack的核心,負責(zé)存儲、搜索

    2024年01月25日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包