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": { ...
随机推荐
- JMeter远程分布式联机性能测试
测试环境 apache-jmeter-2.13 Java JDK版本:1.8 1. JMeter分布式测试简介 当一个JMeter客户端因网络限制等因素,无法模拟足够的用户对服务器施压时,需要用到J ...
- HDU 2255 ——奔小康赚大钱——————【KM算法裸题】
奔小康赚大钱 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- cf914F. Substrings in a String(bitset 字符串匹配)
题意 题目链接 Sol Orz jry 和上一个题一个思路吧,直接bitset乱搞,不同的是这次有了修改操作 因为每次修改只会改两个位置,直接暴力改就好了 #include<bits/stdc+ ...
- vue组件双向绑定.sync修饰符的一个坑
我们知道组件是单项的,但是有时候需要双向,这时候我们可以使用.sync修饰符,但今天遇到一个坑,一直不成功,花了半小时试出来的.... 在编程的时候我们很习惯冒号后面跟着空格.而.sync双向绑定需要 ...
- 解决Pandoc wasn't found.pdflatex not found on PATH
解决nbconvert failed: Pandoc wasn't found.解决nbconvert failed: pdflatex not found on PATH 问题1描述 500 : I ...
- 增加ssh无密码信任连接的安全性
为了方便系统管理或者服务器运维自动化,我们通常要在服务器间做ssh无密码信任连接. 环境:目标主机 centos7 192.168.150.110操作主机 centos7-cn 19 ...
- Android SQLite数据库之事务的学习
SQLite是Android系统内置的一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了.SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务. ...
- gradle方式集成融云sdk dlopen failed: library "libsqlite.so" not found
1.gradle implementation 'cn.rongcloud.android:IMLib:2.8.6' implementation 'cn.rongcloud.android:IMKi ...
- Azure降价辣么多,省下的预算该怎么花?
那么 Azure 产品创新以及服务完善到底体现在何处呢?以下最新发布内容也许可以告诉你答案. ◆ ◆ ◆ Power BI Embedded 让应用中的数据更加生动 Microsoft Power B ...
- webpack了解
一.理解webpack 什么是webpack? 是一个模块打包器.它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform).打包 ...