Elsticsearch
ElasticSearch-全文检索简介
一、基本概念
二、Docker 安装 Es
1、下载镜像文件
2、创建实例
1、ElasticSearch
mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.ymlchmod -R 777 /mydata/elasticsearch/ 保证权限docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch: 7.4.2
2、Kibana
三、初步检索
1、_cat
2、索引一个文档(保存)
3、查询文档
GET customer/external/1结果:{"_index": "customer",// 在哪个索引"_type": "external",// 在哪个类型"_id": "1",// 记录 id"_version": 2,// 版本号"_seq_no": 1,// 并发控制字段,每次更新就会 +1 ,用来做乐观锁"_primary_term": 1,// 同上,主分片重新分配,如重启,就会变化"found": true,"_source": {// 真正的内容"name": "John Doe"}}
4、更新文档
POST customer/external/1/_update{"doc":{"name": "John Doew"}}或者POST customer/external/1{"name": "John Doe2"}或者 PUT customer/external/1{"name": "John Doe"}
5、删除文档&索引
6、bulk 批量 API
POST customer/external/_bulk{"index":{"_id":"1"}}{"name": "John Doe" }{"index":{"_id":"2"}}{"name": "Jane Doe" }语法格式:{ action: { metadata }}\n{ request body}\n{ action: { metadata }}\n{ request body}\n复杂实例:POST /_bulk{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}{ "create": { "_index": "website", "_type": "blog", "_id": "123" }} { "title":"My first blog post" }{ "index": { "_index": "website", "_type": "blog" }}{ "title":"My second blog post" }{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }{ "doc" : {"title" : "My updated blog post"} }
7、样本测试数据
{"account_number": 0,"balance": 16623,"firstname": "Bradshaw","lastname": "Mckenzie","age": 29,"gender": "F","address": "244 Columbus Place","employer": "Euron","email": "bradshawmckenzie@euron.com","city": "Hobucken","state": "CO"}https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json?raw=true 导入测试数据POST bank/account/_bulk
四、进阶检索
1、SearchAPI
GET bank/_search{"query": {"match_all": {}},"sort": [{"account_number": {"order": "desc"}}]}
2、Query DSL
QUERY_NAME: {ARGUMENT: VALUE,ARGUMENT: VALUE,...}}
{QUERY_NAME: {FIELD_NAME: {ARGUMENT: VALUE,ARGUMENT: VALUE,...}}}GET bank/_search{"query": {"match_all": {}},"from": 0,"size": 5,"sort": [{"account_number": {"order": "desc"}}]}
GET bank/_search{"query": { "match_all": {}},"from": 0,"size": 5,"_source": ["age","balance"]}
GET bank/_search{"query": {"match": {"account_number": "20"}}}
GET bank/_search{"query": {"match": {"address": "mill"}}}
GET bank/_search{"query": {"match": {"address": "mill road"}}}
GET bank/_search{"query": {"match_phrase": {"address": "mill road"}}}查出 address 中包含 mill road 的所有记录,并给出相关性得分5 )、 multi_match 【多字段匹配】GET bank/_search{"query": {"multi_match": {"query": "mill","fields": ["state","address"]}}}
GET bank/_search{"query": {"bool": {"must": [{ "match": { "address": "mill" } }, { "match": { "gender": "M" } }]}}}
GET bank/_search{"query": {"bool": {"must": [{ "match": { "address": "mill" } },{ "match": { "gender": "M" } }],"should": [{"match": { "address": "lane" }}]}}}must_not 必须不是指定的情况GET bank/_search{"query": {"bool": {"must": [{ "match": { "address": "mill" } },{ "match": { "gender": "M" } }],"should": [{"match": { "address": "lane" }}],"must_not": [{"match": { "email": "baluba.com" }}]}} }
GET bank/_search{"query": {"bool": {"must": [{"match": { "address": "mill"}}],"filter": {"range": {"balance": {"gte": 10000,"lte": 20000}}}}}}
和 match 一样。匹配某个属性的值。 全文检索字段用 match , 其他非 text 字段匹配用 term 。 GET bank/_search{"query": {"bool": {"must": [{"term": {"age": {"value": "28"}}},{"match": {"address": "990 Mill Road"}}]}}}
GET bank/_search{"query": {"match": {"address": "mill"}},"aggs": {"group_by_state": {"terms": {"field": "age"}},"avg_age": {"avg": { "field": "age"}}},"size": 0}size : 0 不显示搜索数据aggs :执行聚合。聚合语法如下"aggs": {"aggs_name 这次聚合的名字,方便展示在结果集中 ": {"AGG_TYPE 聚合的类型(avg,term,terms ) ": {}}},
GET bank/account/_search{"query": {"match_all": {}},"aggs": {"age_avg": {"terms": {"field": "age","size": 1000},"aggs": {"banlances_avg": {"avg": {"field": "balance"}}}}},"size": 1000}
GET bank/account/_search {"query": {"match_all": {}},"aggs": {"age_agg": {"terms": {"field": "age","size": 100},"aggs": {"gender_agg": {"terms": {"field": "gender.keyword","size": 100},"aggs": {"balance_avg": {"avg": {"field": "balance"}}}},"balance_avg":{"avg": {"field": "balance"}}}}},"size": 1000
PUT /my-index{"mappings": {"properties": { "age":{ "type": "integer" },"email": { "type": "keyword" },"name":{ "type": "text" }}}}2 、添加新的字段映射PUT /my-index/_mapping{"properties": {"employee-id": {"type": "keyword","index": false}}}
POST _reindex [ 固定写法 ]{"source": {"index": "twitter"},"dest": {"index": "new_twitter"}}将旧索引的 type 下的数据进行迁移POST _reindex{"source": { "index": "twitter","type": "tweet"},"dest": {"index": "tweets"}}
docker exec -it 容器 id /bin/bashwgethttps://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zipunzip 下载的文件rm –rf *.zipmv elasticsearch/ ik可以确认是否安装好了分词器cd ../binelasticsearch plugin list :即可列出系统的分词器
POST _analyze{"text": " 我是中国人 "}请观察结果使用分词器POST _analyze{ "analyzer": "ik_smart","text": " 我是中国人 "}请观察结果另外一个分词器ik_max_wordPOST _analyze{ "analyzer": "ik_max_word","text": " 我是中国人 "}
/usr/share/elasticsearch/plugins/ik/config<?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"> http://192.168.128.130/fenci/myword.txt </entry><!-- 用户可以在这里配置远程扩展停止词字典 --><!-- <entry key="remote_ext_stopwords">words_location</entry> --></properties>原来的 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>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.4.2</version></dependency>
@BeanRestHighLevelClient client() {RestClientBuilder builder = RestClient.builder(new HttpHost("192.168.56.10", 9200,"http"));return new RestHighLevelClient(builder);}
@Testvoid test1() throws IOException {Product product = new Product();product.setSpuName(" 华为 ");product.setId(10L);IndexRequest request = new IndexRequest("product").id("20").source("spuName"," 华为 ","id",20L);try {IndexResponse response = client.index(request, RequestOptions.DEFAULT);System.out.println(request.toString()); IndexResponse response2 = client.index(request, RequestOptions.DEFAULT);} catch (ElasticsearchException e) {if (e.status() == RestStatus.CONFLICT) {}}}
docker run -p 80:80 --name nginx \-v /mydata/nginx/html:/usr/share/nginx/html \-v /mydata/nginx/logs:/var/log/nginx \-v /mydata/nginx/conf:/etc/nginx \-d nginx:1.10
Elsticsearch相关推荐
- 搭建elsticsearch集群 报错 failed to send join request to master [{data-node-0}(已经测试)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_24879495/article/details/77718032 搭建elsticsea ...
- filebeat收集日志到elsticsearch中并使用ingest node的pipeline处理
filebeat收集日志到elsticsearch中 一.需求 二.实现 1.filebeat.yml 配置文件的编写 2.创建自定义的索引模板 3.加密连接到es用户的密码 1.创建keystore ...
- 架构设计:Vue+nginx+jwt+zuul+eureka+ribbon+hystrix+rabbitmq+mysql集群+redis集群+elsticsearch集群
- ELK5.3环境部署
1.环境说明 服务器角色: 192.168.50.211 kafka+zookeeper 192.168.50.212 kafka+zookeeper 192.168 ...
- 配置三台服务器组成的ELK集群(二)
上一篇里主要是介绍了ES和ES-Head的安装过程,这一篇继续介绍ELK集群的其他核心组件安装过程. 五.安装Logstash: 本案的Logstash安装在10.113.130.117上:燃鹅,Lo ...
- 如何爬取了知乎用户信息,并做了简单的分析
转载请标明出处: http://blog.csdn.net/forezp/article/details/68951699 本文出自方志朋的博客 一.使用的技术栈: 爬虫:python27 +requ ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器
注: elasticsearch 版本6.2.2 1)集群模式,则每个节点都需要安装ik分词,安装插件完毕后需要重启服务,创建mapping前如果有机器未安装分词,则可能该索引可能为RED,需要删除后 ...
- Elasticsearch高级(Shards、高可用集群搭建)
一.ES核心概念 1. ES基本概念名词: Cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化 ...
- 23_深度探秘搜索技术_best fields策略的dis_max、tie_breaker参数以及multi_match语法
目录 一.引入dis_max 实现best fields 的必要性 1.使用bulk批量添加测试数据 2.搜索title或content中包含java或solution的帖子 3.结果分析 二.bes ...
最新文章
- python爬虫之Scrapy框架的post请求和核心组件的工作 流程
- android 的listview 3大优化策略
- 如何通过其他主机查看Apahce服务器的运行状态
- ST单片机使用ST Visual Programmer软件烧录程序简易教程
- sdut 2136 数据结构实验之二叉树的建立与遍历
- luogu1347 排序
- [转] .NET 3.5中MSChart组件的ImageLocation属性含义
- 服务器日志记录_5种改善服务器日志记录的技术
- 我从参加#PerfMatters会议中学到的东西
- 利用FPGA加速实现高性能计算
- 广联达文件被锁怎么修复_事无巨细的绕过Apple id教程+修复蜂窝数据/电话
- 信息学奥赛一本通C++语言——1006:A+B问题
- 在不如意的世界里全力以赴_我如何在“外展之旅”中全力以赴
- sql单表简单的分页脚本
- 精通那么多技术,你为何还是受不到重用?
- java循环第四次处理_JAVA第四次实验
- Ubuntu 安装 tensorflow-gpu 1.4 包含 CUDA 8.0 和cuDNN
- java pdf绘图_Java 在PDF文档中绘制图形
- Python: 模糊综合评价法
- iOS App 性能优化总结
热门文章
- MAC地址更改----校园网MAC绑定破解
- com域名和cn域名net域名的区别是什么
- 三维空间点集的最小外接矩形
- Flutter Clip剪裁组件
- 数据科学家定位和职业规划
- 农地里怒放的生命:常锋植保无人机
- 存在哪些生物信息学子领域?
- 不知道吃什么?来个随即点餐,点到啥吃啥!
- 企业培训考试、知识竞赛、考评考核,倾力支持
- C语言程序之经典习题:给出一百分制成绩,要求输出成绩等级‘A‘B ‘C‘D‘E ‘,90 分以上为‘A”,80~89 分为‘B‘,70~79 分为‘C‘,60~69 分为‘D‘,60 分以下为‘E‘