搜索引擎ElastaticSearch使用

  1. 安装:

https://www.elastic.co/downloads/elasticsearch

  1. 下载安装包后解压

 

 

 

 配置elastaticsearch.yml:

# ======================== Elasticsearch Configuration =========================

#

# NOTE: Elasticsearch comes with reasonable defaults for most settings.

#       Before you set out to tweak and tune the configuration, make sure you

#       understand what are you trying to accomplish and the consequences.

#

# The primary way of configuring a node is via this file. This template lists

# the most important settings you may want to configure for a production cluster.

#

# Please consult the documentation for further information on configuration options:

# https://www.elastic.co/guide/en/elasticsearch/reference/index.html

#

# ---------------------------------- Cluster -----------------------------------

#

# Use a descriptive name for your cluster:

#

#cluster.name: my-application

#

# ------------------------------------ Node ------------------------------------

#

# Use a descriptive name for the node:

#

#node.name: node-1

#

# Add custom attributes to the node:

#

#node.attr.rack: r1

#

# ----------------------------------- Paths ------------------------------------

#

# Path to directory where to store the data (separate multiple locations by comma):

#

#path.data: /path/to/data

#

# Path to log files:

#

#path.logs: /path/to/logs

#

# ----------------------------------- Memory -----------------------------------

#

# Lock the memory on startup:

#

#bootstrap.memory_lock: true

#

# Make sure that the heap size is set to about half the memory available

# on the system and that the owner of the process is allowed to use this

# limit.

#

# Elasticsearch performs poorly when the system is swapping the memory.

#

# ---------------------------------- Network -----------------------------------

#

# By default Elasticsearch is only accessible on localhost. Set a different

# address here to expose this node on the network:

#

#network.host: 192.168.0.1

#

# By default Elasticsearch listens for HTTP traffic on the first free port it

# finds starting at 9200. Set a specific HTTP port here:

#

http.port: 9200

#

# For more information, consult the network module documentation.

#

# --------------------------------- Discovery ----------------------------------

#

# Pass an initial list of hosts to perform discovery when this node is started:

# The default list of hosts is ["127.0.0.1", "[::1]"]

#

#discovery.seed_hosts: ["host1", "host2"]

#

# Bootstrap the cluster using an initial set of master-eligible nodes:

#

#cluster.initial_master_nodes: ["node-1", "node-2"]

#

# For more information, consult the discovery and cluster formation module documentation.

#

# --------------------------------- Readiness ----------------------------------

#

# Enable an unauthenticated TCP readiness endpoint on localhost

#

#readiness.port: 9399

#

# ---------------------------------- Various -----------------------------------

#

# Allow wildcard deletion of indices:

#

#action.destructive_requires_name: false

http.cors.enabled: true            

http.cors.allow-origin: "*"

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------

#

# The following settings, TLS certificates, and keys have been automatically      

# generated to configure Elasticsearch security features on 15-07-2022 05:45:57

#

# --------------------------------------------------------------------------------

# Enable security features

xpack.security.enabled: false

xpack.security.enrollment.enabled: true

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents

xpack.security.http.ssl:

  enabled: true

  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes

xpack.security.transport.ssl:

  enabled: true

  verification_mode: certificate

  keystore.path: certs/transport.p12

  truststore.path: certs/transport.p12

# Create a new cluster with the current node only

# Additional nodes can still join the cluster later

# Allow HTTP API connections from anywhere

# Connections are encrypted and require user authentication

http.host: 127.0.0.1

# Allow other nodes to join the cluster from anywhere

# Connections are encrypted and mutually authenticated

#transport.host: 0.0.0.0

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------

action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*

xpack.graph.enabled: false

xpack.ml.enabled: false

3.进入bin目录下,双击执行elasticsearch.bat

 

 

 

 

 

 4.看到started说明启动成功,打开浏览器测试一下,如下图

http://localhost:9200

 

 

 

 

3、安装ElasticSearch-head插件

下载插件

GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster下载安装包

本地安装node环境,下载安装包解压后执行npm install;  npm run start 即可;下载插件时如果插件版本过低可以用如下配置替换:

{
  "name": "elasticsearch-head",
  "version": "0.0.0",
  "description": "Front end for an elasticsearch cluster",
  "main": "_site/index.html",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "start": "grunt server",
    "test": "grunt jasmine",
    "proxy": "node proxy/index.js"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/mobz/elasticsearch-head.git"
  },
  "author": "",
  "license": "Apache2",
  "gitHead": "0c2ac0b5723b493e4454baa7398f386ecb829412",
  "readmeFilename": "README.textile",
  "devDependencies": {
    "grunt": "1.5.3",
    "grunt-contrib-clean": "1.0.0",
    "grunt-contrib-concat": "1.0.1",
    "grunt-contrib-connect": "3.0.0",
    "grunt-contrib-copy": "1.0.0",
    "grunt-contrib-jasmine": "1.0.3",
    "grunt-contrib-watch": "1.1.0",
    "grunt-karma": "2.0.0",
    "http-proxy": "1.16.x",
    "karma": "1.3.0"
  },
  "dependencies": {
    "extend": "^3.0.2"
  }
}

启动后访问 127.0.0.1:9100即可;

这个插件是elastaticsearch的图形化操作页面

  1. springboot集成:

pom文件加入:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

Application.yml 配置es地址及连接:没有设置账号密码,但是可以设置

spring:
  elasticsearch:
    rest:
      uris: http://127.0.0.1:9200

定义实体,映射es上的索引:es上需要建立名为accounts的索引,并插入数据,通过head可视化界面操作即可:

http://localhost:9200/accounts    put请求

{
    "mappings": {
        "properties": {
            "user": {
                "type": "text"
            },
            "title": {
                "type": "text"=
            },
            "desc": {
                "type": "text"
            }
        }
    }
}

http://localhost:9200/accounts/_doc/  post请求

{"user":"123","title":"123","desc":"123"}

@Data
@Document(indexName = "accounts") //es上索引名称
public class Accounts {

    @Field(type = FieldType.Text)
    private String user;

    @Field(type = FieldType.Text,analyzer = "ik_max_word") //字段类型,采用中文分词器
    private String title;

    @Field(type = FieldType.Text)
    private String desc;
}

Service方法,实现es查询,采用ElasticsearchRestTemplate模板

public void test() {
        //根据id查询
        //Accounts accounts = restTemplate.get("Rnu1AIIBd4eRv-x8LdUX", Accounts.class);

        //根据条件查询
        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
        //精确查询
//        queryBuilder.must(QueryBuilders.termQuery("title", "1"));
        //模糊查询
//        queryBuilder.must(QueryBuilders.wildcardQuery("title", "*1*"));
        //中文分词查询,查询什么:查询,什么
        queryBuilder.must(QueryBuilders.matchQuery("title", "查询什么"));
        NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(queryBuilder).build();
        SearchHits<Accounts> search = restTemplate.search(query, Accounts.class);
        List<SearchHit<Accounts>> searchHits = search.getSearchHits();
        List<Accounts> collect = searchHits.stream().map(SearchHit::getContent).collect(Collectors.toList());
        Accounts content = searchHits.get(0).getContent();
        log.info(""+content);
        System.out.println("");
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值