浅练一下ElasticSearch的field属性&&ES整合springboot&&集群管理

ES的field属性&&ES整合springboot&&集群管理

1.field介绍

1.1.field的属性介绍

POST /java2022/course/_mapping
{
   
  "_source": {
   
  	"includes":[
  	"description"
  	],
    "excludes": [
      "item_desc"
    ]
  },
  "properties": {
   
    "id":{
   
      "type": "keyword"
    },
    "item_title": {
   
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_smart"
    }
    "item_price": {
   
      "type": "float"
    },
    "item_image": {
   
      "type": "text",
      "index": false
    }
  }
}
  • _source: document中是否存储,如果只想存储某几个字段的原始值到Elasticsearch,可以通过incudes参数来设置、可以通过excludes参数排除某些字段。
  • 通过type属性指定field的类型。文本:text、keyword(往索引目录写不进行分词)、数字:integer、long、float、double
  • 通过analyzer属性指定定义放入索引的分词模式。
  • 通过search_analyzer属性定义搜索时使用的分词器模式。
  • 之前的文章对于ik分词器建议是索引时使用ik_max_word将搜索内容进行细粒度分词,搜索时使用ik_smart提高搜索精确性。
  • 通过index属性指定是否往索引目录写。默认为index=true,可不写。即要进行索引,只有进行索引才可以从索引库搜索到。图片地址一长串,不需要搜索,可为false。

1.2.field属性的设置标准

属性 标准
type 分词是否有意义
index 是否搜索
source 是否展示

2.Spring Boot整合ElasticSearch

2.1.ES客户端

ES提供多种不同的客户端:

1、TransportClient

​ ES提供的传统客户端,官方计划8.0版本删除此客户端。

2、RestClient

​ RestClient是官方推荐使用的,它包括两种:REST Low Level Client和 REST High Level Client。ES在6.0之后提供REST High Level Client, 两种客户端官方更推荐使用 REST High Level Client,不过当前它还处于完善中,有些功能还没有。

2.2.搭建工程

2.2.1.pom.xml


<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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.2.RELEASEversion>
    parent>

    <groupId>com.bjpowernodegroupId>
    <artifactId>springboot_elasticsearchartifactId>
    <version>1.0-SNAPSHOTversion>
    
    
    <properties>
        <elasticsearch.version>6.2.3elasticsearch.version>
    properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.elasticsearch.clientgroupId>
            <artifactId>elasticsearch-rest-high-level-clientartifactId>
            <version>${elasticsearch.version}version>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
        dependency>
    dependencies>
project>

2.2.2.application.yml

spring:
  elasticsearch:
    rest:
      uris:
        - http://192.168.163.135:9200

2.2.3.app

package com.bjpowernode;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ElasticsearchApp {
   

	public static void main(String[] args) {
   
		SpringApplication.run(ElasticsearchApp.class, args);
	}
}

2.3.索引管理

2.3.1.创建索引库

2.3.1.1.api

创建索引库:

PUT /java2202
{
   
  "settings":{
   
       "number_of_shards" : 2,
       "number_of_replicas" : 0
  }
}

创建映射:

POST /java2202/course/_mapping
{
   
  "_source": {
   
    "excludes":["description"]
  }, 
 	"properties": {
   
      "name": {
   
          "type": "text",
          "analyzer":"ik_max_word",
          "search_analyzer":"ik_smart"
      },
      "description": {
   
          "type": "text",
          "analyzer":"ik_max_word",
          "search_analyzer":"ik_smart"
       },
       "studymodel": {
   
          "type": "keyword"
       },
       "price": {
   
          "type": "float"
       },
       "pic":{
   
		   "type":"text",
		   "index":false
	    }
  }
}
2.3.1.2.Java Client
package com.bjpowernode.test;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices

你可能感兴趣的:(elasticsearch,spring,boot,搜索引擎,java,大数据)