• Java

elasticsearch入门教程

ElasticSearch是全文搜索最常见的开源工具,它支持快速存储,检索大量数据。

基本概念:

Node 与 Cluster

Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。单个 Elastic 实例称为一个节点(node),一组节点构成一个集群(cluster)。

Index

Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。 所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。

下面的命令可以查看当前节点的所有 Index。 curl -X GET 'http://localhost:9200/_cat/indices?v'

Document

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。 Document 使用 JSON 格式表示,下面是一个例子:

{
  "user": "张三",
  "title": "工程师",
  "desc": "数据库管理"
}

同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

Type

Document 可以分组,比如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。 不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

下面的命令可以列出每个 Index 所包含的 Type。

$ curl 'localhost:9200/_mapping?pretty=true' 根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

常用操作:

新建索引 curl -X PUT 'localhost:9200/index_name'

删除索引 curl -X DELETE 'localhost:9200/index_name'

新增记录 curl -X PUT 'localhost:9200/accounts/person/1' -d '{ "user": "张三"}'

查询记录 curl 'localhost:9200/accounts/person/1?pretty=true'

删除记录 curl -X DELETE 'localhost:9200/accounts/person/1'

更新记录 curl -X PUT 'localhost:9200/accounts/person/1' -d '{"user" : "张三",}'

查询所有 curl 'localhost:9200/accounts/person/_search'

全文搜索 curl 'localhost:9200/accounts/person/_search' -d '{ "query" : { "match" : { "name" : "张三" }}}'

or搜索 curl 'localhost:9200/accounts/person/_search' -d '{ "query" : { "match" : { "desc" : "软件 系统" }}}'

and搜索 curl 'localhost:9200/accounts/person/_search' -d '{ "query": {"bool": {"must": [{ "match": { "desc": "软件" } }, { "match":"desc": "系统" } } ] } }}'

elasticsearch安装记录:

Linux:

sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.zip
unzip elasticsearch-6.5.1.zip
cd elasticsearch-6.5.1
sudo chown -R z *
./bin/elasticsearch
curl localhost:9200

Windows:

下载elasticsearch, https://www.elastic.co/downloads/elasticsearch

修改配置文件config/elasticsearch.yml 增加

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type

进入bin 双击elasticsearch.bat,启动 测试: curl localhost:9200

安装head:

下载elasticsearch-head-master git://github.com/mobz/elasticsearch-head.git

先装node.js

解压,进入目录,npm install; npm run start,然后访问 http://localhost:9100/

安装中文分词插件

./bin/elasticsearch-plugin install https://luangeng.gitee.io/cdn/package/elasticsearch-analysis-ik-6.3.0.zip

参考:

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

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html


最新