一、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. Spring Aware

    spring依赖注入的最大亮点就是所有的bean感知不到spring容器的存在,但在实际开发中,我们不可避免的要用到spring容器本身的功能资源,这时,我们就必须意识到容器的存在(废话,都要跟容器进 ...

  2. ArrayList代码分析

    集合算是java中最常用的部分了,阅读该部分jdk代码可以让我们更加清楚的了解其实现原理,在使用时也能心中有数,有利于写出高质量的代码. ArrayList 底层数组实现,初始长度10,超过长度后的自 ...

  3. MySQL 8.0之后版本密码修改

    MySQL刚刚安装完毕时 mysqld --initialize grep password /var/log/mysqld.log 获取临时密码 mysql -uroot -p 输入临时密码登录My ...

  4. jQuery的实现编码,解决特殊字符 <script> "

    function htmlEncode(value){ if (value) { return jQuery('<div />').text(value).html(); } else { ...

  5. c# 父类的引用指向子类的实例

    在C#中关于父类对子类的引用大概有这么几种: 父类是接口,普通类,抽象类 public interface A { void a(); } public class B { public void b ...

  6. vue打包后CSS中引用的背景图片不显示问题

    vue项目中,在css样式中引用了一张背景图片,开发环境下是可以正常显示,build之后背景图片不显示. 解决方法: 找到build/utils.js文件 修改成为如下所示内容:  添加红框中的内容即 ...

  7. vue-router配置

    首先在App.vue中 1.使用router-link组件来导航,通过‘to'属性指定链接,<router-link> 默认会被渲染成一个 `<a>` 标签 <route ...

  8. 使用 Notapad++ 进行 Java 开发

    准备工具 1.安装 JDK 以及配置相关环境变量: 2.安装 64 位版的 Notepad++ : 2.一台 64 位 Windows 系统电脑: 一.下载&安装Notepad++ 官网下载地 ...

  9. IOS 计算文字尺寸(UILabel)

    方式1 :普通用法 #define  MJNameFont [UIFont systemFontOfSize:14] /** * 计算文字尺寸 * * @param text 需要计算尺寸的文字 * ...

  10. mongodb在C#的连接以及curd写法

    连接数据库:参考地址:https://blog.oz-code.com/how-to-mongodb-in-c-part-2/ // Empty ctor will get you a // clie ...