天天看点

Elasticsearch1 基本概念2 架构4 命令

1 基本概念

(1) Lucene:是一个开源的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,但它不是一个完整的全文检索引擎.

(2) Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架.

(3) 搜索引擎:按照功能通常分为垂直搜索(专门针对某一类信息进行搜索)和综合搜索(对众多信息进行综合性的搜索).

(4) 倒排索引:对数据库原始的数据根据字或词进行索引,创建倒排索引数据区域,记录字或词在文档中出现位置(id列表)。用户有查询需求时,先访问倒排索引数据区域,得出文档id列表后,通过文档id即可快速、准确的找到具体的文档内容.

2 架构

(1) 集群(cluster):集群中有多个节点,其中有一个为主节点,主节点通过选举产生的.

(2) 分片(shards):ES可以把一个完整的索引分成多个分片,分布到不同的节点上,构成分布式搜索.分片的数量只能在索引创建前指定,创建后不能更改.

(3) 副本(replicas):ES可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复.二是提高ES的查询效率,ES会自动对搜索请求进行负载均衡.

(4) 索引(index):存储数据的表结构,任何搜索数据,存放在索引对象上.

(5) 文档类型(type):一个索引对象存放多种类型数据,数据用文档类型进行标识

(6) 映射(mapping):数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等.

(7) 文档(document):一条数据记录,存在索引对象上.

Elasticsearch 集群可以包含多个索引(Index),每个索引可以包含多个类型(Type),每个类型可以包含多个文档(Document),每个文档可以包含多个字段(Field).

4 命令

4.1 系统配置

(1) 启动:bin/elasticsearch -d

(2) 停止:jps找到进程名为Elasticsearch对应的pid,杀掉进程

4.2 创建

(1) 创建索引

curl -XPUT http://ip:8200/index -d '
{
	"settings": {
		"index": {
			"number_of_shards": "5",
			"number_of_replicas": "1"
		}
	},
	"mappings": {
		"type": {
			"properties": {
				"tot_bring_pv": {
					"type": "long"
				},
				"tag_comm_detain": {
					"type": "integer"
				},
				"user_register_dur": {
					"type": "long"
				}
			}
		}
	}
}
           

4.3 修改

(1) 添加文档,指定doc_id.

curl -i -XPUT  http://ip:8200/index/type/1 -d '
{
	"birthday": null,
	"tenant_id": "1195139863579501676",
	"gender": "0",
	"city": null,
	"user_name": ""
}'
           

备注:也可用于修改文档

(2) 添加文档,自动产生文档id

curl -i -XPOST  http://ip:8200/index/type/ -d '
{
	"birthday": null,
	"tenant_id": "1195139863579501676",
	"gender": "0",
	"city": null,
	"user_name": ""
}'
           

4.4 删除

(1) 删除文档

curl -i -XPOST "http://ip:8200/index/_delete_by_query" -H 'Content-Type: application/json' -d'
{
  "query": { 
    "match": {
      "phone_number": "13672438580"
    }
  }
}
           

(2) 删除索引(谨慎)

#curl -i -XDELETE http://ip:8200/test_index/

5.5 查询

(1) 查询总记录数

curl -i -XGET 'http://ip:8200/feizhi_index/_count'

(2) 匹配查询

curl -i -XGET 'http://ip:8200/index/type/_search' -d '{
	"query": {
		"match": {
			"phone_number": "13672438580"
		}
	}
}'
           

(3) sql查询

curl -i XGET "http://ip:8200/_sql?sql=select%20*%20from%20index%20where%20phone_number=13536149112"

5.6 参数配置

(1) 设置每分钟可执行script的数量

curl -XPUT http://ip:8200/_cluster/settings -d '{ "transient": { "script.max_compilations_per_minute": 200 } }'

(2) 带账号密码

curl -i -XGET 'http://172.30.99.51:8200/index/_count'  -u 'elastic:Qinglian!2019'

(3) 禁止自动添加类型字段

PUT your_index
{
 "mappings":{
   "doc": {
    "dynamic": "strict",
    "properties": {
       ...
    }
   }
 }
}