一、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. LeetCode 441.排列硬币(C++)

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围内. 示例 ...

  2. 打开/关闭网卡无线WIFI模块

    @echo off title ------(Please run as Administrators)Please select------ :begin echo ---------------- ...

  3. CSS display:none和visibility:hidden区别

    你知道CSSdisplay:none和visibility:hidden的区别吗,这里和大家分享一下,使用CSS display:none属性后,HTML元素(对象)的宽度.高度等各种属性值都将&qu ...

  4. java.lang.IllegalArgumentException: Page directive: invalid value for import 问题处理

    1.问题说明: 项目原来用的tomcat版本是apache-tomcat-6.0,后来为了安全原因将版本升至apache-tomcat-7.0,发现有的jsp页面出现下面的异常: java.lang. ...

  5. Http Client 源码分析

    /** * 此接口仅代表HTTP请求执行的最基本约定. * 它对请求执行过程没有任何限制或特定的细节,并将状态管理.身份验证和重定向处理的细节留给单个实现. */ public interface H ...

  6. asp.net 翻页时用ViewState保存上一页checkbox勾选的值

    /// <summary>        /// checkbox勾选取消勾选事件        /// </summary>        /// <param nam ...

  7. Android studio 安装与配置【Android学习入门】

    终于下定决心认真学习Android开发了. 之前在很多平台看到很多大牛们学习Android的经验和心得,纸上得来终觉浅. 这里推荐stormzhang老师总结的Android学习之路. 为了防止电脑卡 ...

  8. mybase修改内部文件免费使用

    关于mybase的介绍就不多说了,下载后一般只有30天的使用期限.以下方法可以无限次使用该软件(当然,每隔一个周期就需要修改myBase.ini) 原文博客详见:https://www.cnblogs ...

  9. myeclipse中如何修改Servlet模板_day01

    参考网址:https://jingyan.baidu.com/article/0eb457e536d5a503f1a90593.html 如果你在web项目下创建一个Servlet类,那么它会自带很多 ...

  10. 笨办法学Python(五)

    习题 5: 更多的变量和打印 我们现在要键入更多的变量并且把它们打印出来.这次我们将使用一个叫“格式化字符串(format string)”的东西. 每一次你使用 " 把一些文本引用起来,你 ...