一、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. 计算机为什么要区别C盘,D盘,E盘等?

      为什么要区分C盘,D盘,E盘,F盘? 1)各盘出现背景 在计算机刚诞生的年代,还没有硬盘,那时数据存储主要靠软盘.软盘驱动器按照顺序占据了A和B盘符的位置,后来随着硬盘的应用,就出现了C盘及以后的 ...

  2. hduoj 2546饭卡

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  3. C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法

    主要介绍了C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法,本文分别给出了使用微软语言包.手动编码实现两种实现方式,需要的朋友可以参考下 本文刚发布时,只写了一个实现方式,使用的是微软的语言包,但 ...

  4. 反向代理总结-reverse-proxy-with-url-rewrite

    iis 反向代理 : 1. 微软文档 https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/reverse-proxy- ...

  5. sqlserver门户设置

    ------ insert by wandz 20180918 门户模板表 start ------set identity_insert oa_portal_template on;begin de ...

  6. Python的历史与基本知识入门

    一.Python简介 1.1989年由"龟叔"Guido van Rossum在圣诞节期间打发无聊时间编写. 2.Python是一门弱类型解释性语言. 3.优点:代码简洁,明确,优 ...

  7. 《Cron表达式详解》

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

  8. selenium并行的使用

    Selenium Grid Parallel Test(C#) Author: Mars (hnynes)Email:  hnynes@gmail.comMSN:    hnynes@gmail.co ...

  9. 如何将windows日志转成syslog格式并发到远程sysylog服务器

      安装Snare, 随便找了个版本下载下来,安装一路next,除了中间让你输入一次http的管理登录口令.   2,配置 之后打开URL:http://192.168.37.23:6161/,输入默 ...

  10. Java I/O 工作机制(二) —— Java 的 I/O 的交互方式分析

    简介: BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善.  ...