ES基本操作
倒排索引
ElasticSearch使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
查询
# 查看索引配置
GET /book/_settings
GET /_all/_settings
# 查询所有index的数据
GET _search
{
"query": {
"match_all": {}
}
}
# 查询文档
GET /lib/user/1
# 查询文档(指定字段)
GET /lib/user/1?_source=age,about
# 查看mapping
GET /lib/user/_mapping
添加
# 创建索引
PUT /lib/
{
"settings":{
"index":{
"number_of_shards":3,
"number_of_replicas":0
}
}
}
# 添加文档(指定id)
PUT /lib/user/1
{
"first_name":"Jane",
"last_name":"Smith",
"age":32,
"about":"I like to colloct rock albums",
"interests":["music","baseketball"]
}
# 添加文档(不指定文档id,系统自动生成id)
POST /lib/user/
{
"first_name":"Douglas",
"last_name":"Fir",
"age":23,
"about":"I like to bulid cabinets",
"interests":["forestry"]
}
更新
# 修改(全字段覆盖的方式)
PUT /lib/user/1
{
"first_name":"Jane",
"last_name":"Smith",
"age":36,
"about":"I like to colloct rock albums",
"interests":["music","baseketball"]
}
# 修改(指定字段)
POST /lib/user/1/_update
{
"doc":{
"age":30
}
}
删除
# 删除文档id
DELETE /lib/user/1
# 删除type
DELETE /lib/user
# 删除index
DELETE lib
批量获取文档
使用es提供的Multi Get API:
使用Multi Get API可以通过索引名、类型名、文档id一次得到一个文档集合,文档可以来自一个索引库,也可以来自不同索引库
使用curl命令:
curl 'http://192.168.242.22:9200/_mget' -d' {
"docs":[
{
"_index":"lib",
"_type":"user",
"_id":1
},
{
"_index":"lib",
"_type":"user",
"_id":AWdQF9axrlJvDlOTtvkF
}
]
}
# kibana dev tools
GET /_mget
{
"docs":[
{
"_index":"lib",
"_type":"user",
"_id":1
},
{
"_index":"lib",
"_type":"user",
"_id":"AWdQF9axrlJvDlOTtvkF"
}
]
}
# 指定获取的字段
GET /_mget
{
"docs":[
{
"_index":"lib",
"_type":"user",
"_id":1,
"_source":"interests"
},
{
"_index":"lib",
"_type":"user",
"_id":"AWdQF9axrlJvDlOTtvkF",
"_source":["interests","age"]
},
{
"_index":"book",
"_type":"novel",
"_id":"5",
"_source":["title","word_count"]
}
]
}
# 相同index、type
GET /lib/user/_mget
{
"docs":[
{
"_id":1
},
{
"_id":"AWdQF9axrlJvDlOTtvkF"
}
]
}
# 再简化
GET /lib/user/_mget
{
"ids":["1","AWdQF9axrlJvDlOTtvkF"]
}
使用Bulk API实现批量操作
bulk的格式:
{
action:{metadata}\n
{resquestbody}\n
}
# action:行为
# create:文档不存在时创建(如果存在使用会报错)
# update:更新文档
# index:创建新文档或替换已有文档
# delete:删除一个文档
# metedata:_index,_type,_id例子
# 删除
{"delete":{"_index":"lib","_type":"user","_id":"1"}}
# 批量添加
POST /lib/books/_bulk
{"index":{"_id":"1"}}
{"title":"Html5","price":45}
{"index":{"_id":"2"}}
{"title":"PHP","price":35}
{"index":{"_id":"3"}}
{"title":"Java","price":55}
{"index":{"_id":"1"}}
{"title":"Python","price":50}
{"index":{"_id":"1"}}
{"title":"Scala","price":48}
# 批量添加
POST /lib/books/_bulk
{"delete":{"_index":"lib","_type":"books","_id":"4"}}
{"create":{"_index":"tt","_type":"ttt","_id":"100"}}
{"name":"lisi"}
{"index":{"_index":"tt","_type":"ttt"}}
{"name":"zhaosi"}
{"update":{"_index":"lib","_type":"books","_id":"5"}}
{"doc":{"price":58}}bulk一次最大处理多少数据量
bulk会把将要处理的数据加载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小及复杂性,你的索引以及搜索的负载
一般建议是1000-5000个文档,大小建议是5-15M,默认不能超过100M,可以再es的配置文件设置
ES基本操作的更多相关文章
- 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作
spring boot 2.X集成ES 进行CRUD操作 完整版 内容包括: ============================================================ ...
- es使用postmain进行数据的增删改查
es的基本安装 安装遇到的问题 java本地环境和es环境冲突 https://www.cnblogs.com/q1359720840/p/14077049.html ,看要使用jdk1 ...
- jest for elasticsearch
*elasticsearch(后面简称es) 背景: 目前项目应用中对es的操作用的是http(自己封装)的一套方法:有些数据处理起来还是需要定制开发处理,不是很方便.正好需要对本项目重新进行改造,于 ...
- elasticsearch索引自动清理
一 es 基本操作 查看所有的索引文件: curl -XGET http://localhost:9200/_cat/indices?v GET /_cat/indices?v DELETE /fi ...
- Spring Boot 集成 Elasticsearch 实战
最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文 ...
- ElasticSearch详细笔记
ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...
- (九)整合 ElasticSearch框架,实现高性能搜索引擎
整合 ElasticSearch框架,实现高性能搜索引擎 1.SpringBoot整合ElasticSearch 1.1 核心依赖 1.2 配置文件 1.3 实体类配置 1.4 数据交互层 1.5 演 ...
- Elasticsearch使用系列-ES增删查改基本操作+ik分词
Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...
- ElasticSearch(三):ES单机版本基本操作之删除,修改,插入
1. 创建索引 1.1 直接创建索引 可以直接使用head插件创建索引,指定分片数和备份数即可.如下图: 1.2 创建结构化索引 上图创建的索引,点开索引信息,mapping是空的,表示该索引的字段并 ...
随机推荐
- (转)在WinForm中选择本地文件
相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地 ...
- Hadoop(二) HADOOP集群搭建(简化版)
1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network ...
- Android.StructureOfAndroidSourceCodeRootTree
Refference 1. How to understand the directory structure of android root tree? http://stackoverflow.c ...
- Linux网卡绑定探析
2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的网卡绑定模式,Linux b ...
- AppStore企业账号打包发布APP流程详解
一.通过企业账号申请证书 1 Certificate Signing Request (CSR)文件 在Mac系统中进入“钥匙串访问”,选择“钥匙串访问”-“证书助理”-“从证书颁发机构请求证书…”, ...
- Python之路(第六篇)Python全局变量与局部变量、函数多层嵌套、函数递归
一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序. 全局变量没有任何缩进,在任何位置都可 ...
- [ES]ES查询指南
我们通常用用_cat API检测集群是否健康. 确保9200端口号可用: curl 'localhost:9200/_cat/health?v' 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本 ...
- 实现SQL express版做自动备份数据库的方法
SQL Server 2005/2008 Express版没有代理组件,不支持维护计划.可以采用下面的办法实现每日备份: 一.在要备份的数据库中创建存储过程. 存储过程名称:sp_BackupData ...
- 【UI测试】--快捷键组合
- inet_pton和inet_ntop inet_ntoa
Linux下地址转换函数 inet_pton ==> Ox inet_ntop ==> xxx.xxx.xxx #include <sys/types.h> #include ...