elasticsearch-dsl笔记
一、elasticsearch安装
安装java1.8以上
安装elasticsearch-rtf(https://github.com/medcl/elasticsearch-rtf)
head插件和kibana的安装
- head:A web front end for an elastic search cluster
Kibana:Kibana is a window into the Elastic Stack. It enables visual exploration and real-time analysis of your data in Elasticsearch
二、Elasticsearch学习
1. elasticsearch概念
- 集群
- 节点
- 分片:将索引划分为多份的能力,允许水平分割和扩展容量,多个分片响应请求,提高性能和吞吐量
- 副本
2. elasticsearch与mysql概念对比
|
Elasticsearch |
Mysql |
|
Index(索引) |
数据库 |
|
Type(类型) |
表 |
|
Documents(文档) |
行 |
|
Fields |
列 |
3. 倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
4. es的文档、索引的CRUD操作
- 索引初始化操作
- 指定分片和副本的数量
- shards一旦设置不能修改
PUT lagou
{
“settings”: {
“index”: {
“number_of_shards”: ,
“number_of_replicas”:
}
}
}
- 获取settings信息
GET lagou/_settings
GET _all/_settings
GET _settings
- 获取settings信息
- 更新settings信息
PUT lagou/_settings
{
“number_of_replicas”:
}
- 更新settings信息
- 获取索引信息
GET _all
GET lagou - 保存一个文档
PUT lagou/job/ --可以不指明id(不指明id,需用POST提交)
{
"title":"python分布式爬虫开发",
"salary_min":,
"city":"北京",
"company":{
"name":"百度",
"company_addr":"北京市软件园"
},
"publish_date":"2017-4-16",
"comments":
} - 获取文档
GET lagou/job/
GET lagou/job/?_source=title
GET lagou/job/?_source=title,city - 修改文档---覆盖方式
PUT lagou/job/
{
Xxx:yyy
} - 修改文档---增量修改方式
POST lagou/job//_update
{
"doc":{
"comments":
}
} - 删除文档
DELETE lagou/job/
- 删除type
POST lagou/job/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
} - 删除索引
DELETE lagou
- 获取索引信息
5. es的批量操作
- 原始数据

- 批量查询
GET _mget
{
"docs":[
{
"_index":"testdb",
"_type":"job1",
"_id":
},
{
"_index":"testdb",
"_type":"job2",
"_id":
}
]
}或者
GET testdb/_mget
{
"docs":[
{
"_type":"job1",
"_id":
},
{
"_type":"job2",
"_id":
}
]
}或者
GET testdb/job1/_mget
{
"docs":[
{
"_id":
},
{
"_id":
}
]
}或者
GET testdb/job1/_mget
{
"ids":[,]
} - bulk批量操作
- 批量查询
- 批量导入可以合并多个操作,比如index,delete,update,create等等。也可以帮助我们从一个索引导入到另一个索引。
- 命令格式:
action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
...
action_and_meta_data\n
optional_source\n - 例如:
{"index":{"_index":"test1", "_type":"type1", "_id":}}
{"field1":"value1", ...} {"delete":{"_index":"test1", "_type":"type1", "_id":}} {"create":{"_index":"test1", "_type":"type1", "_id":}}
{"field1":"value1", ...} {"update":{"_index":"test1", "_type":"type1", "_id":}}
{"doc":{"field1":"value1"}} - 需要注意的是,每一条数据都由两行构成(delete除外),其他的命令比如index和create都是由元信息行和数据行组成,update比较特殊它的数据行可能是doc也可能是upsert或者script。
- 批量导入
POST _bulk
{"index":{"_index":"lagou", "_type":"job", "_id":}}
{"title":"python分布式爬虫开发", "salary_min":, "city":"北京", "company":{"name":"百度", "company_addr":"北京市软件园"}, "publish_date":"2017-4-16", "comments":}
{"index":{"_index":"lagou", "_type":"job", "_id":}}
{"title":"python django开发", "salary_min":, "city":"上海", "company":{"name":"腾讯", "company_addr":"北京市软件园4-1"}, "publish_date":"2017-4-17", "comments":}
6. 映射(mapping)
创建索引的时候,可以预先定义字段的类型以及相关属性,mapping是类似于数据库中的表结构定义,主要作用如下:
- 定义index下的字段名
- 定义字段类型,比如数值型、浮点型、布尔型等
- 定义倒排索引相关的设置,比如是否索引、记录position等
作用:会让索引建立得更加细致和完善
类型:静态映射和动态映射
内置类型:
- String类型:text,keyword
- 数字类型:long, integer, short, byte, double, float
- 日期类型:date
- Bool类型:boolean
- Binary类型:binary
- 复杂类型:object,nested
- Geo类型:geo-point,geo-shape
- 专业类型:ip,competion
常用属性:
| 属性 | 描述 | 适合类型 |
| store |
Yes:存储,no:不存储,默认no |
all |
| index |
yes:分析,no:不分析,默认值为true |
string |
| null_value |
如果字段为空,可以设置一个默认值,比如“NA” |
all |
| analyzer |
可以设置索引和搜索时用的分析器,默认使用的是standard分析器,还可以使用whitespace、simple、english |
all |
|
include_in_all |
默认es为每个文档定义一个特殊域_all,它的作用是让每个字段被搜索到,,如果不想某个字段被搜索到,可以设置为false |
all |
| format |
时间格式字符串的模式 |
date |
- 创建映射
PUT zhilian
{
"mappings": {
"job":{
"properties": {
"title":{
"type":"text"
},
"salary_min":{
"type":"integer"
},
"city":{
"type":"keyword"
},
"company":{
"properties": {
"name":{
"type":"text"
},
"company_addr":{
"type":"text"
},
"employee_count":{
"type":"integer"
}
}
},
"publish_date":{
"type":"date",
"format": "yyyy-MM-dd"
},
"comments":{
"type": "integer"
}
}
}
}
} - 获取mapping
GET zhilian/job/_mapping
- 创建映射
7.查询
- 未完待续...
elasticsearch-dsl笔记的更多相关文章
- ElasticSearch详细笔记
ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...
- Elasticsearch学习笔记一
Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...
- ElasticSearch NEST笔记
ElasticSearch NEST笔记 1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analyti ...
- elasticsearch学习笔记——相关插件和使用场景
logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...
- ElasticSearch学习笔记(超详细)
文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...
- Elasticsearch学习笔记(二)Search API 与 Query DSL
一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以 ...
- 白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 二.福利:账号借用 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! ...
- 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...
- ElasticSearch 入门笔记1
1. 起步 1. 建demo工程,看文档,做典型demo 2. 资源列表: http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 3. 启动: ...
- Elasticsearch DSL中Query与Filter的不同
Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search { "query": { ...
随机推荐
- LeetCode 167.两数之和(C++)
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- LeetCode 122.买卖股票的最佳时机(C++)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...
- ruby逻辑判断符号
puts true and false #相当于 (puts true) and false Use &&/|| for boolean expressions, and/or fo ...
- 【PHP】 hash加密
之前对密码进行加密是在JS文件里做的,但是不行,改到PHP文件里进行加密比较安全,于是乎…… [原JS加密代码] var password = sha256_digest(pwd); 后来在网上调查方 ...
- SQL Server 创建用户
增加角色 role_for_nc 1.exec sp_addrole 'role_for_nc'; 创建一个 SQL Server 登录名wlzx,密码为"123",默认数据库为 ...
- 在thinkpad SL400上U盘安装双系统ubuntu14.10
转自:http://zydky.iteye.com/blog/1674100 上文中装的双系统是centos6.3,因为自己对ubuntu有点熟悉,就装了ubuntu. 笔记本是09年入手的,买了之后 ...
- Conferences
中国学术会议在线 :http://www.meeting.edu.cn 中国会议网: http://www.chinameeting.com 香山科学会议:http://www.xssc.ac.cn/ ...
- u-boot分析(七)----内存初始化
u-boot分析(七) 上篇博文我们按照210的启动流程,分析到了时钟初始化,今天我们继续按照u-boot的启动流程对内存的初始化进行分析. 今天我们会用到的文档: 1. 2440芯片手 ...
- python模块详解 hashlib
hashlib模块 用于加密相关的操作,在python3中替代了md5和sha模块,主要提供SHA和MD5算法. MD5 import hashlib m = hashlib.md5() #调用md5 ...
- Spring Boot入门程序-STS
使用Eclipse EE 中的 Spring Tool插件,完成 第一个Spring Boot应用程序的创建. 一.安装Spirng Tool插件 在 Eclipse EE Oxygen版本,安装“S ...