安装jdk之后
es下载: https://www.elastic.co/downloads/elasticsearch
解压 /usr/local/elasticsearch/es-5.1.2
运行./bin/elasticsearch 即可
异常:
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
解决
创建elsearch用户组及elsearch用户
[root@SHB-L0039546 es-5.1.2]# groupadd elsearch
[root@SHB-L0039546 es-5.1.2]# useradd es -g elsearch -p zookeeper123
更改elasticsearch文件夹及内部文件的所属用户及组为 elsearch:es
cd /usr/local/
chown -R es:elsearch elasticsearch
切换到elsearch用户再启动
su - es
cd /usr/local/elasticsearch/es-5.1.2
./bin/elasticsearch
后台启动 + -d
异常:
java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
elasticsearch-5.0.1 只支持内核3.5以上版本的linux操作系统
centos6.5报错
验证安装
再命令行执行
curl 'http://localhost:9200/?pretty'
出现结果
{
"name" : "kGsFjdu",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6K-D_etVQ_GAvgsGUNhRfA",
"version" : {
"number" : "5.1.2",
"build_hash" : "c8c4c16",
"build_date" : "2017-01-11T20:18:39.146Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}
表示结果正常
es使用
在megacorp索引中给employee类型增加一条记录id为1
curl -XPUT 'http://localhost:9200/megacorp/employee/1' -d'
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}';
curl -XPUT 'http://localhost:9200/megacorp/employee/2' -d'
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}';
curl -XPUT 'http://localhost:9200/megacorp/employee/3' -d'
{
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}';
查询megacorp索引下employee类型id为1的记录
curl -XGET 'http://localhost:9200/megacorp/employee/1'
查询所有信息
curl -XGET 'http://localhost:9200/megacorp/employee/_search'
简单条件查询
curl -XGET 'http://localhost:9200/megacorp/employee/_search?q=last_name:Smith'
match 查询法
curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d'
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}'
结构化搜索的限定条件 filter(过滤器):
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 } <1>
}
},
"query" : {
"match" : {
"last_name" : "Smith" <2>
}
}
}
}
}
下面2种的区别是 第一种是分词之后匹配 第二种是全词匹配
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}
高亮搜索
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
分组统计
1.统计每个兴趣爱好有几个人
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}
结果
{
...
"hits": { ... },
"aggregations": {
"all_interests": {
"buckets": [
{
"key": "music",
"doc_count": 2
},
{
"key": "forestry",
"doc_count": 1
},
{
"key": "sports",
"doc_count": 1
}
]
}
}
}
2.查询结果再分组
{
"query": {
"match": {
"last_name": "smith"
}
},
"aggs": {
"all_interests": {
"terms": {
"field": "interests"
}
}
}
}
结果
...
"all_interests": {
"buckets": [
{
"key": "music",
"doc_count": 2
},
{
"key": "sports",
"doc_count": 1
}
]
}
3.分组之后再统计 select avg(age),interests from employee where ... group by interests
{
"aggs" : {
"all_interests" : {
"terms" : { "field" : "interests" },
"aggs" : {
"avg_age" : {
"avg" : { "field" : "age" }
}
}
}
}
}
结果
...
"all_interests": {
"buckets": [
{
"key": "music",
"doc_count": 2,
"avg_age": {
"value": 28.5
}
},
{
"key": "forestry",
"doc_count": 1,
"avg_age": {
"value": 35
}
},
{
"key": "sports",
"doc_count": 1,
"avg_age": {
"value": 25
}
}
]
}
除此之外还有很多功能,比如建议、地理定位、过滤、模糊以及部分匹配等
我们通过将HTTP后的请求方式由 PUT 改变为 GET 来获取文档,
同理,我们也可以将其更换为 DELETE 来删除这个文档,
HEAD 是用来查询这个文档是否存在的。
如果你想替换一个已经存在的文档,你只需要使用 PUT 再次发出请求即可
es集群
master 节点无需参与文档层面的变更和搜索,这意味着仅有一个 master 节点并不会因流量增长而成为瓶颈
作为用户,我们可以访问包括 master 节点在内的集群中的任一节点。每个节点都知道各个文档的位置,
并能够将我们的请求直接转发到拥有我们想要的数据的节点。无论我们访问的是哪个节点,
它都会控制从拥有数据的节点收集响应的过程,并返回给客户端最终的结果。这一切都是由 Elasticsearch 透明管理的
集群健康
集群健康(cluster health)。它的 status 有 green、yellow、red 三种;
GET /_cluster/health
状态 意义
green 所有主分片和从分片都可用
yellow 所有主分片可用,但存在不可用的从分片
red 存在不可用的主要分片
在Elasticsearch中,每一个字段都会默认被建立索引。也就是说,每一个字段都会有一个反向索引以便快速搜索。
而且,与大多数其他数据库不同的是ES可以在同一个查询中使用所有的反向索引,以惊人的速度返回查询结果。
文档元数据
_index
选择一个索引的名字。这个名称必须要全部小写,也不能以下划线开头,不能包含逗号
_type
_id
id是一个字符串,当它与_index以及_type组合时,就可以来代表Elasticsearch中一个特定的文档。我们创建了一个新的文档时,你可以自己提供一个_id,或者也可以让Elasticsearch帮你生成一个。
索引Id的生成策略
1.自己定义ID使用方法
PUT /{index}/{type}/{id}
{
"field": "value",
...
}
2.es自动生成自增长
POST /website/blog/
{
"title": "My second blog entry",
"text": "Still trying this out...",
"date": "2014/01/01"
}
自生成ID是由22个字母组成的,安全 universally unique identifiers 或者被称为UUIDs
在任意的查询字符串中添加pretty参数,类似上面的请求,Elasticsearch就可以得到优美打印的更加易于识别的JSON结果。
_source字段不会执行优美打印,它的样子取决于我们录入的样子
GET请求的返回结果中包含{"found": true}。这意味着这篇文档确实被找到了。如果我们请求了一个不存在的文档,我们依然会得到JSON反馈,只是found的值会变为false。
同样,HTTP返回码也会由'200 OK'变为'404 Not Found'。我们可以在curl后添加-i,这样你就能得到反馈头文件:
通常,GET请求会将整个文档放入_source字段中一并返回。但是可能你只需要title字段。你可以使用_source得到指定字段。如果需要多个字段你可以使用逗号分隔:
GET /website/blog/123?_source=title,text
现在_source字段中就只会显示你指定的字段:
{
"_index" : "website",
"_type" : "blog",
"_id" : "123",
"_version" : 1,
"exists" : true,
"_source" : {
"title": "My first blog entry" ,
"text": "Just trying this out..."
}
}
或者你只想得到_source字段而不要其他的元数据,你可以这样请求:
GET /website/blog/123/_source
这样结果就只返回:
{
"title": "My first blog entry",
"text": "Just trying this out...",
"date": "2014/01/01"
}
检查文档是否存在
如果确实想检查一下文档是否存在,你可以试用HEAD来替代GET方法,这样就是会返回HTTP头文件:
curl -i -XHEAD /website/blog/123
如果文档存在,Elasticsearch将会返回200 OK的状态码:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 0
如果不存在将会返回404 Not Found状态码:
curl -i -XHEAD /website/blog/124
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=UTF-8
Content-Length: 0
当然,这个反馈只代表了你查询的那一刻文档不存在,但是不代表几毫秒后它不存在,很可能与此同时,另一个进程正在创建文档。
更新整个文档
在Documents中的文档是不可改变的。所以如果我们需要改变已经存在的文档,
我们可以使用《索引》中提到的indexAPI来重新索引或者替换掉它:
PUT /website/blog/123
{
"title": "My first blog entry",
"text": "I am starting to get the hang of this...",
"date": "2014/01/02"
}
在反馈中,我们可以发现Elasticsearch已经将_version数值增加了:
{
"_index" : "website",
"_type" : "blog",
"_id" : "123",
"_version" : 2,
"created": false <1>
}
created被标记为 false是因为在同索引、同类型下已经存在同ID的文档。
在内部,Elasticsearch已经将旧文档标记为删除并且添加了新的文档。旧的文档并不会立即消失,但是你也无法访问他。Elasticsearch会在你继续添加更多数据的时候在后台清理已经删除的文件。
在本章的后面,我们将会在《局部更新》中介绍最新更新的API。这个API允许你修改局部,但是原理和下方的完全一样:
从旧的文档中检索JSON
修改它
删除修的文档
索引一个新的文档
唯一不同的是,使用了updateAPI你就不需要使用get然后再操作index请求了。
分享到:
相关推荐
**Elasticsearch 入门与实战** Elasticsearch 是一个基于 Lucene 的开源全文搜索引擎,以其分布式、可扩展性、实时搜索以及强大的数据分析能力而受到广泛欢迎。它不仅支持文本搜索,还可以处理结构化和非结构化数据...
**Elasticsearch 入门到精通** Elasticsearch 是一个高度可扩展的开源全文搜索引擎,设计用于处理大量数据,提供实时分析和搜索功能。它基于 Lucene 库,但提供了更高级别的分布式、RESTful 风格的搜索和数据分析...
综合案例分析通常涵盖整个Elastic Stack的使用流程,包括配置Filebeat、Logstash,以及利用ElasticSearch、Kibana来完成从数据采集、处理到分析和可视化的整个链路。在实践中,用户可以根据自己的业务需求,通过这些...
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得...
全套 elasticsearch从入门到精通到运维 基于ES5.6版本 有视频 文档 快速上手
elasticsearch视频教程从入门到精通,文档里面有百度网盘的地址和提取码。
Elasticsearch7.8零基础入门进阶视频教程05 解压密码 www.itjc8.com&@xe0@35LWeY*
### Elasticsearch入门教程知识点详解 #### 一、Elasticsearch安装与基本操作 1. **解压目录结构**: - 在解压后的Elasticsearch目录中,通常包含多个子目录和文件,例如`bin`目录包含了启动脚本,`config`目录...
"Elasticsearch 入门操作" Elasticsearch 是一个基于 Lucene 库的搜索引擎,提供了一个分布式、支持多用户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。所有其他语言可以使用 RESTful API 通过端口 9200...
Elasticsearch7.8零基础入门进阶视频教程
这篇入门学习笔记将引导初学者了解如何安装、配置以及使用Elasticsearch。 首先,让我们从安装开始。要安装Elasticsearch,你可以访问官方网站(https://www.elastic.co/cn/downloads/elasticsearch)下载最新版本...
Elasticsearch的分布式特性意味着它能够水平扩展到数百台服务器,并能够处理PB级别的结构化或非结构化数据。 安装Elasticsearch的过程相对简单。首先,需要确保系统中安装了Java 8,因为Elasticsearch是用Java编写...
1. **安装与配置**:Elasticsearch的安装通常涉及下载最新版本的软件包,解压并配置`elasticsearch.yml`配置文件。6.1版本可能包含了一些优化的默认设置,例如内存分配和插件管理,确保更好的启动和运行体验。 2. *...
"ElasticSearch实战教程" ElasticSearch是一款分布式、RESTful 风格的搜索和数据分析引擎,能够达到近实时搜索,稳定,可靠,快速...本教程旨在帮助您快速入门ElasticSearch,掌握ElasticSearch的基本概念和实战应用。
001 - 开篇.mp4 002 - 技术选型.mp4 003 - 教学大纲.mp4 008 - 入门 - HTTP - 索引 - 创建.mp4 009 - 入门 - HTTP - 索引 - 查询 & 删除.mp4 010 - 入门 - HTTP - 文档 - 创建 (Put & ...025 - 入门 - JavaAPI - 文档
第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,执行MusicReviewIndex中的单元测试方法index() 第三步:检索测试,执行MusicReviewSearch中的单元测试方法search() 本实例基于: ...
1. **搭建bboss elasticsearch开发环境.wmv**: 这个视频将指导你完成从安装Elasticsearch到配置BBoss的全过程,确保你的开发环境正确无误。 2. **bboss elasticsearch开发入门教程.wmv**: 通过实例演示,讲解如何...
03_Elasticsearch如何安装以及相关插件的介绍 04_什么是倒排索引 05_Elasticsearch 单模式下API的增删改查操作 06_Elasticsearch 批量获取mget 07_Elasticsearch 批量操作bulk 08_Elasticsearch 版本控制version 09_...
在本项目"springboot+elasticsearch"中,开发者提供了一个全面的入门教程,涵盖了Elasticsearch的基本操作,包括增、删、改、查等基本功能,这对于初学者理解这两者如何协同工作非常有帮助。 首先,让我们深入了解...