一、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. 织梦dede模板中调用会员信息标签的方法

    织梦CMS v5.7调用文章所属会员信息标签 打开官方默认模板article_artcile.htm,我们可以提取出如下代码: {dede:memberinfos} 会员头像:<a href=& ...

  2. 【ubuntu】出现device not managed连接不上网络

    ubuntu安装好后显示“device not managed” 1. 编辑/etc/NetworkManager/NetworkManager.conf: sudo gedit /etc/Netwo ...

  3. jq回到顶部效果分析

    在浏览网页时,超出屏幕高度就会出现提上点击回到顶部的图标,点击即可回到页面顶部. 用到的知识点如下: 1.首先控制图标的显示和隐藏,先要获取浏览器的高度. var wHeight = $(window ...

  4. Linux 命令-1

    1.除了/之外,所有的字符都合法,有些字符最好不要用 2.以.开头的文件将被隐藏.和window的区别 3.大小写敏感 4.命令格式: 命令 -选项 参数   例如: ls -la /etc  ,选项 ...

  5. iOS 8 提供 TestFlight 方便开发者测试软件 (转)

    原文地址:http://tech2ipo.com/66893 TestFlight / via iMore 作者: Nick Arnott   译者:翛凌 原文:iMore  iOS 应用程序的测试对 ...

  6. jQuery中的CSS-DOM操作

    html代码 <p style="color:blue;">武汉PHP培训-武汉长乐教育</p> css()方法 $("p").css( ...

  7. Sass基础(二)

    五.嵌套 在Sass中,嵌套有三种方式:选择器嵌套.属性嵌套.伪类嵌套 1.选择器嵌套 2.属性嵌套 3.伪类嵌套 六.混合宏 当样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无法达到目的了 ...

  8. Android 修改圆形progressBar颜色

    查了半天资料,没查到怎样修改progressBar的方法,全都是重新写个ProgressBar,其实很简单在只要一句xml里一句化就可以 android:indeterminateTint=" ...

  9. 【工作中学习2】Map的使用及排序(第三个参数)

    项目进行中,使用到Map(std::map),Map要点整理如下: 1. Map,也叫关联数组,提供key/value(键/值对),key用来索引,value是被存储和检索的数据. 2. key值唯一 ...

  10. webpack gulp grunt 简单介绍

    本文主要是讲下webpack的相关知识点,理论比较多,因为webpack的功能非常强大,说到的也基本都是经常用到的. 这三个工具都属于前端自动化的工具,都是第三方的,并且国内很多大型团队也都有自己成熟 ...