一、elasticsearch安装

  1. 安装java1.8以上

  2. 安装elasticsearch-rtf(https://github.com/medcl/elasticsearch-rtf)

  3. 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信息

       PUT  lagou/_settings
      {
      “number_of_replicas”:
      }
    • 获取索引信息

       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笔记的更多相关文章

  1. ElasticSearch详细笔记

    ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...

  2. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  3. ElasticSearch NEST笔记

    ElasticSearch NEST笔记 1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analyti ...

  4. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  5. ElasticSearch学习笔记(超详细)

    文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...

  6. Elasticsearch学习笔记(二)Search API 与 Query DSL

    一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以 ...

  7. 白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。

    目录 一.导读 二.福利:账号借用 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! ...

  8. 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。

    目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...

  9. ElasticSearch 入门笔记1

    1. 起步 1. 建demo工程,看文档,做典型demo 2. 资源列表: http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 3. 启动: ...

  10. Elasticsearch DSL中Query与Filter的不同

    Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search { "query": { ...

随机推荐

  1. 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01

    本文是<x86汇编语言:从实模式到保护模式>(电子工业出版社)的读书实验笔记. 这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果. 需要的源码文件 第一个文件是加载程 ...

  2. [转]asp.net core视图组件(ViewComponent)简单使用

    本文转自:http://www.cnblogs.com/dralee/p/6170496.html 一.组成: 一个视图组件包括两个部分,派生自ViewComponent的类及其返回结果.类似控制器. ...

  3. mysql常用的优化措施

    http://www.cnblogs.com/ggjucheng/archive/2012/11/07/2758058.html

  4. jQuery的定时执行和延迟执行

    jQuery的定时执行和延迟执行 //延迟执行 setTimeout(function(){ console.log("实战授课,100%就业"); },600); //定时执行 ...

  5. XHML教会我的一些东西-5

    这是写好之后的主页代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  6. (生产)vuex - 状态管理

    参考:https://vuex.vuejs.org/zh-cn/ 安装 直接下载 / CDN 引用 https://unpkg.com/vuex在 Vue 之后引入 vuex 会进行自动安装:< ...

  7. 认识less和webstrom的less配置

    认识less和webstrom的less配置 今天完成的事情: 首先第一件事情是,整理一下常用的颜色摄取 #F1F1F1 google的设置页面的body的背景颜色 #FFF 为google的内容块的 ...

  8. 【翻译】Best Practices for User interface android 适配不同屏幕、不同分辨率

    地址:http://developer.android.com/training/multiscreen/screendensities.html#TaskProvideAltBmp 安卓支持不同的屏 ...

  9. Android - 页面返回上一页面的三种方式

    今年刚刚跳槽到了新公司,也开始转型做Android,由此开始Android的学习历程. 最近在解很多UI的bug,在解bug过程中,总结了在UI的实现过程中,页面返回上一页面的几种实现方式. 一. 自 ...

  10. 由Asp.Net客户端控件生成的服务器端控件

    由Asp.Net客户端控件生成的服务器端控件(也就是给客户端控件添加 runnat="server"),这样的控件既能在js中通过id命.类名获取到,也能在服务器端根据id获取到