文章目录
ElasticSearch概述谁在用
4.Solr和ES的对比及选型Solr简介Es vs Solr的总结
Docker 安装ES及插件Docker 安装ESElasticsearch-head可视化安装 cnpm install运行在docker容器中为elasticsearch配置跨域访问
了解ELKElastic Kibana
ES核心概念ik分词器查找es使用分词器的两种方式制作分词
Rest风格说明查看默认配置信息
关于ES文档API操作SpringBoot集成ES
ElasticSearch概述
谁在用
4.Solr和ES的对比及选型
Solr简介
Es vs Solr的总结
Docker 安装ES及插件
Docker 安装ES
1.先查看docker容器中es的镜像列表:
docker search elasticsearch
2.推荐镜像:nshou/elasticsearch-kibana,已包含Kibana
docker pull nshou/elasticsearch-kibana
3.拉好后查看本机已安装的镜像
docker images
4.运行镜像,注意需要映射容器和本机的端口9200,9300,5601(kibana使用)
启动时进行端口映射:docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 --name eskibana nshou/elasticsearch-kibana
5.docker ps 查看当前运行的容器
进入容器:docker exec -it 4d34fbf944a5 /bin/bash
(4d34fbf944a5为ps后看到的容器id)
6.如果报错:stat /bin/bash: no such file or directory": unknown
说明这个容器没有bash,所以执行下面的命令:
sudo docker exec -it 2df4237ffe01 sh
127.0.0.1:9200
Elasticsearch-head可视化
elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。
安装 cnpm install
下载地址: https://mobz.github.io/elasticsearch-head/
╭─mac@wang
.local
~/java_project
/es
/elasticsearch
-head ‹master›
╰─➤ cnpm install
⠦
[0/10] Installing http
-proxy@
1.16.x
[npminstall
:get
] retry GET https
://registry
.npm
.taobao
.org
/grunt
-contrib
-clean
/download
/grunt
-contrib
-clean
-1.0.0.tgz after
100ms
, retry left
4, error
: Error
: getaddrinfo ENOTFOUND cdn
.npm
.taobao
.org
at GetAddrInfoReqWrap
.onlookup
[as oncomplete
] (dns
.js
:66:26) {
运行
╰─➤ npm run start
1 ↵
> elasticsearch
-head@
0.0.0 start
/Users
/mac
/java_project
/es
/elasticsearch
-head
> grunt server
Running
"connect:server" (connect
) task
Waiting forever
...
Started connect web server on http
://localhost
:9100
在docker容器中为elasticsearch配置跨域访问
https://www.cnblogs.com/ygxdbmx/p/11032150.html tips: 安装vim时用 sudo
等待一小会,就能连接
了解ELK
Elastic Kibana
Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。
你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。
Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。
ES核心概念
ik分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases
查看docker image 使用的 elasticsearch 版本号,所以IK版本需要一致
docker exec
-it
1c9caab2ff77
/bin
/bash
elasticsearch@
1c9caab2ff77
:~/elasticsearch
-7.7.0$ cd plugins
/
wget https
://github
.com
/medcl
/elasticsearch
-analysis
-ik
/releases
/download
/v7
.7.0/elasticsearch
-analysis
-ik
-7.7.0.zip
下载速度很慢,可以在本地下载再使用docker cp传
docker cp
-f
/Users
/mac
/Downloads
/ik
1c9caab2ff77
:/home
/elasticsearch
/elasticsearch
-7.7.0/plugins
查找es使用分词器的两种方式
制作分词
如果想使用自己的分词,可以配置自己的文件
elasticsearch@
1c9caab2ff77
:~/elasticsearch
-7.7.0/plugins
/ik
/config$ cat IKAnalyzer
.cfg
.xml
<?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"></entry
>
<!--用户可以在这里配置自己的扩展停止词字典
-->
<entry key
="ext_stopwords"></entry
>
<!--用户可以在这里配置远程扩展字典
-->
<!-- <entry key
="remote_ext_dict">words_location
</entry
> -->
<!--用户可以在这里配置远程扩展停止词字典
-->
<!-- <entry key
="remote_ext_stopwords">words_location
</entry
> -->
</properties
>
elasticsearch@
1c9caab2ff77
:~/elasticsearch
-7.7.0/plugins
/ik
/config$
每次操作后都需要重启es容器
Rest风格说明
查看默认配置信息
关于ES文档API操作
SpringBoot集成ES
package com
.kuang
.kuangshenesjd
.service
;
import com
.alibaba
.fastjson
.JSON
;
import com
.kuang
.kuangshenesjd
.pojo
.Content
;
import com
.kuang
.kuangshenesjd
.utils
.HtmlParseUtil
;
import org
.elasticsearch
.action
.bulk
.BulkRequest
;
import org
.elasticsearch
.action
.bulk
.BulkResponse
;
import org
.elasticsearch
.action
.index
.IndexRequest
;
import org
.elasticsearch
.action
.search
.SearchRequest
;
import org
.elasticsearch
.action
.search
.SearchResponse
;
import org
.elasticsearch
.client
.RequestOptions
;
import org
.elasticsearch
.client
.RestHighLevelClient
;
import org
.elasticsearch
.common
.text
.Text
;
import org
.elasticsearch
.common
.unit
.TimeValue
;
import org
.elasticsearch
.common
.xcontent
.XContentType
;
import org
.elasticsearch
.index
.query
.QueryBuilders
;
import org
.elasticsearch
.index
.query
.TermQueryBuilder
;
import org
.elasticsearch
.search
.SearchHit
;
import org
.elasticsearch
.search
.builder
.SearchSourceBuilder
;
import org
.elasticsearch
.search
.fetch
.subphase
.highlight
.HighlightBuilder
;
import org
.elasticsearch
.search
.fetch
.subphase
.highlight
.HighlightField
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.stereotype
.Service
;
import java
.io
.IOException
;
import java
.util
.ArrayList
;
import java
.util
.List
;
import java
.util
.Map
;
import java
.util
.concurrent
.TimeUnit
;
@Service
public class ContentService {
@Autowired
private RestHighLevelClient restHighLevelClient
;
public Boolean
parseContent(String keywords
) throws IOException
{
ArrayList
<Content> contents
= new HtmlParseUtil().parseJD(keywords
);
BulkRequest bulkRequest
= new BulkRequest();
bulkRequest
.timeout("2m");
for (int i
= 0; i
< contents
.size(); i
++) {
bulkRequest
.add(
new IndexRequest("jd_goods")
.source(JSON
.toJSONString(contents
.get(i
)), XContentType
.JSON
));
}
BulkResponse bulkResponse
= restHighLevelClient
.bulk(bulkRequest
, RequestOptions
.DEFAULT
);
return bulkResponse
.hasFailures();
}
}
package com
.kuang
.kuangshenesjd
.controller
;
import com
.kuang
.kuangshenesjd
.service
.ContentService
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.stereotype
.Controller
;
import org
.springframework
.ui
.Model
;
import org
.springframework
.web
.bind
.annotation
.GetMapping
;
import org
.springframework
.web
.bind
.annotation
.PathVariable
;
import org
.springframework
.web
.bind
.annotation
.ResponseBody
;
import java
.io
.IOException
;
import java
.util
.List
;
import java
.util
.Map
;
@Controller
public class ContentController {
@Autowired
private ContentService contentService
;
@GetMapping("/parse/{keyword}")
@ResponseBody
public Boolean
parse(@PathVariable("keyword") String keyword
) throws IOException
{
return contentService
.parseContent(keyword
);
}
}
http://localhost:9090/search/java/1/20
http://localhost:9090/parse/java