文档章节

ElasticSearch入门

BeanHo
 BeanHo
发布于 04/16 15:18
字数 727
阅读 8
收藏 0

安装

单实例安装

mkdir imooc
cd imooc
brew install wget
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-darwin-x86_64.tar.gz
ls
tar -vxf elasticsearch-7.0.0-darwin-x86_64.tar.gz
cd elasticsearch-7.0.0
java -version
sh ./bin/elasticsearch
localhost:9200
cd elasticsearch-7.0.0
ls
vim config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
./bin/elasticsearch -d

插件安装

github -> mobz/elasticsearch-head

cd imooc
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
ls
unzip master.zip
ls
cd elasticsearch-head-master
ls
node -v
npm install
npm run start
localhost:9100

分布式安装

cd elasticsearch-7.0.0
vim config/elasticsearch.yml

cluster.name: bing
node.name: master
node.master: true
network.host: 127.0.0.1

ps -ef | grep `pwd`
kill -9 5531

./bin/elasticsearch -d
clear
cd imooc
mkdir es_slave
cp elasticsearch-7.0.0-darwin-x86_64.tar.gz es_slave
cd es_slave
ls
tar -vxf elasticsearch-7.0.0-darwin-x86_64.tar.gz
cp -r elasticsearch-7.0.0 es_slave1
cp -r elasticsearch-7.0.0 es_slave2

cd es_slave1
vim config/elasticsearch.yml

cluster.name: bing
node.name: slave1
network.host: 127.0.0.1
http.port: 10200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
./bin/elasticsearch -d

cd es_slave2
vim config/elasticsearch.yml

cluster.name: bing
node.name: slave2
network.host: 127.0.0.1
http.port: 11200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
./bin/elasticsearch -d

基础概念

集群/节点/索引(数据库)/类型(表)/文档(记录)/分片/备份

基本用法

索引创建

api格式:http://<ip>:<port>/<索引>/<类型>/<文档id> 非格式化索引:http://localhost:9100/ -> 索引 -> 新建索引 格式化索引:postman->put: http://localhost:9200/dogs -> body -> raw

{
	"settings": {
		"number_of_shards": 3,
		"number_of_replicas": 1
	},
	"mappings": {
		"properties": {
			"name": {
				"type": "text"
			},
			"country": {
				"type": "keyword"
			},
			"age": {
				"type": "integer"
			},
			"date": {
				"type": "date",
				"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
			}
		}
	}
}

插入

post: http://127.0.0.1:9200/dogs/_doc/ put: http://127.0.0.1:9200/dogs/_doc/1

{
	"name": "walili",
	"country": "China",
	"age": 23,
	"date": "1988-08-08" 
}

修改

put: http://127.0.0.1:9200/dogs/_doc/1

删除

查询

{
	"query": {
		"match_all": {}
	}
}
{
	"query": {
		"match_all": {}
	},
	"from": 0,
	"size": 1
}
{
	"query": {
		"match": {
			"name": "walili"
		}
	}
}
{
	"query": {
		"match": {
			"country": "China"
		}
	},
	"sort": [
		{
			"date": {"order": "desc"}
		}
	]
}
  • 聚合查询
{
	"aggs": {
		"group_by_age": {
			"terms": {
				"field": "age"
			}
		},
		"group_by_date": {
			"terms": {
				"field": "date"
			}
		}
	}
}
{
	"aggs": {
		"grades_age": {
			"stats": {
				"field": "age"
			}
		}
	}
}
{
	"aggs": {
		"grades_age": {
			"min": {
				"field": "age"
			}
		}
	}
}

高级查询

query

get: http://127.0.0.1:9200/dogs/_search

  • 全文本查询:准对文本型数据
  • 字段级别查询:针对结构化数据

模糊查询

{
	"query": {
		"match": {
			"name": "wali大师"
		}
	}
}

短语查询

{
	"query": {
		"match_phrase": {
			"name": "wali大师"
		}
	}
}

多个字段模糊查询

{
	"query": {
		"multi_match": {
			"query": "wali",
			"fields": ["name", "country"]
		}
	}
}

语法查询

{
	"query": {
		"query_string": {
			"query": "lili OR 大师",
			"fields": ["name", "country"]
		}
	}
}

字段查询

{
	"query": {
		"range": {
			"age": {
				"gte": "30",
				"lte": "100"
			}
		}
	}
}

filter

{
	"query": {
		"bool": {
			"filter": {
				"term": {
					"age": "77"
				}
			}
		}
	}
}

复合查询

get: http://127.0.0.1:9200/_search

{
	"query": {
		"match": {
			"name": "wali"
		}
	}
}

固定分数查询

{
	"query": {
		"constant_score": {
			"filter": {
				"match": {
					"age": "77"
				}
			},
			"boost": 2
		}
	}
}

布尔查询

{
	"query": {
		"bool": {
			"should": [
				{
					"match": {
						"name": "wali"
					}
				},
				{
					"match": {
						"country": "大师"
					}
				}
			]
		}
	}
}
{
	"query": {
		"bool": {
			"must": [
				{
					"match": {
						"name": "wali"
					}
				},
				{
					"match": {
						"country": "大师"
					}
				}
			]
		}
	}
}
{
	"query": {
		"bool": {
			"must_not": [
				{
					"term": {
						"name": "wali"
					}
				}
			]
		}
	}
}

SB 集成 ES

SB 集成 ES

<properties>
        <java.version>1.8</java.version>
        <elasticsearch.version>5.5.2</elasticsearch.version>
</properties>
...
<dependency>
	<groupId>org.elasticsearch.client</groupId>
	<artifactId>transport</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.7</version>
</dependency>
package com.qianbill.admin_api;

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @Auther: beanho
 * @Date: 2019/4/17 15:51
 * @Description:
 */
@Configuration
public class ElasticSearch {

    @Bean
    public TransportClient client() throws UnknownHostException {
        InetSocketTransportAddress node = new InetSocketTransportAddress(
                InetAddress.getByName("localhost"),
                9300
        );

        Settings settings = Settings.builder()
                .put("cluster.name", "bing")
                .build();

        TransportClient client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(node);

        return client;
    }
}

查询接口开发

增加接口开发

删除接口开发

更新接口开发

复合查询接口开发

总结

© 著作权归作者所有

BeanHo
粉丝 0
博文 72
码字总数 28600
作品 0
东莞
私信 提问
Elasticsearch入门篇——基础知识

还记得大二的时候,初入Java大门,就大言不惭的给老师说,我要开发一个搜索引擎,结果是各种学习,各种找资料,终于在期末的时候,做出了一个简单新闻搜索页面,搜索模块是使用了Lucene。 今...

JAVA_冯文议
03/11
0
0
elasticsearch搜索引擎相关资料(更新中)

最近需要用到elasticsearch搜索引擎,所以搜集了很多相关资料,先放在这里(未详细整理) 一、步骤总结:(linux环境下) 1. 安装 (1)下载elasticsearch安装包:http://www.elasticsearch....

核桃人
2018/03/08
0
0
Elasticsearch 基础入门

原文地址:Elasticsearch 基础入门 博客地址:www.extlight.com 一、什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于...

moonlightL
2017/09/27
0
0
ElasticSearch的介绍及使用

1.ElasticSearch 简介 : 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源...

全世界最好的肥猪精
2018/12/23
0
0
springboot整合elasticsearch全文检索入门

只是简单的整合介绍 # 安装 下载elasticsearch与kibana https://www.elastic.co/start # 依赖 springBoot 2.0.5.RELEASE 起步依赖的elasticsearch的版本是 5.6.11 # 配置 可在application.y...

FutaoSmile丶
2018/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 吾不好梦中插人

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @鱼豆腐233 :#今日歌曲分享# 分享My Chemical Romance的单曲《I Don't Love You》: 《I Don't Love You》- My Chemical Romance 手机党少年们...

小小编辑
今天
115
9
ss5 vpn 安装(linux版本)

1. 创建一个文件夹 /ss5 你也可以自定义,不过后续的地方需要注意自己的地址 2. 下载ss5文件(如果你的服务器没有安装wget请使用 yum -y install wget 命令安装 如果连yum都没安装自己查去)(下...

太黑_thj
今天
2
0
八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
5
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
3
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部