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": { ...
随机推荐
- Classes as objects
Before understanding metaclasses, you need to master classes in Python. And Python has a very peculi ...
- 注册中心eureka
最近在忙一些其它的事情,两个城市来回跑还要办一些手续,挺费劲的,学习的事情也就耽误了一些,尽量赶吧. spring cloud为分布式的微服务架构提供了一站式的解决方案,eureka注册中心在spri ...
- linux工具:快速返回某级父目录--bd
当我们在linux服务器上切换父目录时,通常使用cd ../../,有几级目录就输入几次"../",如果目录嵌套的过深,就会有点晕菜...因此,本次介绍的这款工具,可以快速的返回指 ...
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction [转]
@Html.Action:需要有对应的Action,并且Action方法有返回值.(注:处理完业务逻辑同时,也需要返回所需值) @{Html.RenderAction}:需要有对应的Action,Ac ...
- IOS如何打越狱包xcode无证书打包ios应用
本文要介绍的是在无证书的情况下如何将自己应用打包出去在越狱设备上使用或发给第三方使用企业签名进行应用分发. 前提条件:拥有appleId账号,并且该账号已经注册开发者中心(无需花钱) 教程开始: 1. ...
- android 学习之ViewDragHelper
ViewDragHelper是用来移动ViewGroup中子View的,之前写View的移动都是通过scrollTo来实现,但是它移动的是VIew中的内容,ViewGroup中的所有的子View都会移 ...
- eclipse中安装thymeleaf插件完成thymeleaf模板中自动代码提示功能
插件地址:https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin 页面有介绍如何使用:
- SPFieldLookupValue class
using System; using Microsoft.SharePoint; namespace ConsoleApp { class Program { static void Main(st ...
- Spark资源管理
Spark资源管理 1.介绍 Spark资源管控分为spark集群自身可支配资源配置和job所用资源配置. 2.spark集群支配资源控制 在spark的conf/spark-env.sh文件中可以指 ...
- vue-cli -- > 项目基本构建的方法
本文档目的在于让对vue了解比较少的同学,能够快速搭建属于自己的vue项目.(window) 一.构建项目的前提条件 1.确保本机安装了node.js ^6 --> javascript 的服务 ...