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是空的,表示该索引的字段并 ...
随机推荐
- ok,机房小感
难得一次能早来机房,趁今天考完试没啥事,随便写两句牢骚. 学习与编程 老师曾经在招生的时候认真讨论过这个问题,这两者彼此协调并不是一件容易事,很明显,编程是一门大课.它虽然与理科有一定联系,但不代表它 ...
- map reduce 用法 str处理lower() capitalize()
-- s=' l={':9}[s[0]] print(l) 取出dic里面key的元素 def normalize(name): tempn=name.lower().capitalize() ret ...
- 动态加载及Servlet容器加载
动态加载 动态加载是 Servlet 3.0 中的新特性,它可以实现在不重启 Web 应用的情况下加载新的 Web 对象(Servlet.Filter.Listener). 为了实现动态加载的第一种方 ...
- Java中多线程访问冲突的解决方式
当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失.因此需要采用同步机制来解决这种问题. 第一种 同步方法 第二种 同步代 ...
- c#对dataset和list集合压缩和解压,能提高访问速度
public class YS { public static byte[] Decompress(byte[] data) { byte[] bData; MemoryStream ms = new ...
- 1.about
1)about Evarobot a.Evarobot Tech Specs 2)应用场景 Using a PC running visualisation/monitoring software a ...
- IOS初级:NSUserDefaults
NSUserDefaults(偏好设置),一个APP对应一个偏好设置 保存/新增数据 //存储数据 NSUserDefaults *defaults = [NSUserDefaults standar ...
- centos7 hbase 搭建笔记
1.require:java环境,本地可用的hadoop 2.拷贝hbase文件(hive-1.2.6) 3.设置环境变量 export HBASE_HOME=/data/spark/bin/hbas ...
- linux 磁盘挂载及查看磁盘
blkid命令实例 .列出当前系统中所有已挂载文件系统的类型: sudo blkid .显示指定设备 UUID: sudo blkid -s UUID /dev/sda5 .显示所有设备 UUID: ...
- 2018.01.04 bzoj5291: [Bjoi2018]链上二次求和(线段树)
传送门 线段树基础题. 题意:给出一个序列,要求支持区间加,查询序列中所有满足区间长度在[L,R][L,R][L,R]之间的区间的权值之和(区间的权值即区间内所有数的和). 想题555分钟,写题202 ...