倒排索引

  • ElasticSearch使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。

查询

# 查看索引配置
GET /book/_settings
GET /_all/_settings
# 查询所有index的数据
GET _search
{
 "query": {
   "match_all": {}
}
}
# 查询文档
GET /lib/user/1
# 查询文档(指定字段)
GET /lib/user/1?_source=age,about
# 查看mapping
GET /lib/user/_mapping

添加

# 创建索引
PUT /lib/
{
 "settings":{
   "index":{
       "number_of_shards":3,
       "number_of_replicas":0
  }
}
}
# 添加文档(指定id)
PUT /lib/user/1
{
 "first_name":"Jane",
 "last_name":"Smith",
 "age":32,
 "about":"I like to colloct rock albums",
 "interests":["music","baseketball"]
}
# 添加文档(不指定文档id,系统自动生成id)
POST /lib/user/
{
 "first_name":"Douglas",
 "last_name":"Fir",
 "age":23,
 "about":"I like to bulid cabinets",
 "interests":["forestry"]
}

更新

# 修改(全字段覆盖的方式)
PUT /lib/user/1
{
 "first_name":"Jane",
 "last_name":"Smith",
 "age":36,
 "about":"I like to colloct rock albums",
 "interests":["music","baseketball"]
}
# 修改(指定字段)
POST /lib/user/1/_update
{
 "doc":{
   "age":30
}
}

删除

# 删除文档id
DELETE /lib/user/1
# 删除type
DELETE /lib/user
# 删除index
DELETE lib

批量获取文档

  • 使用es提供的Multi Get API:

  • 使用Multi Get API可以通过索引名、类型名、文档id一次得到一个文档集合,文档可以来自一个索引库,也可以来自不同索引库

  • 使用curl命令:

    curl 'http://192.168.242.22:9200/_mget' -d' {
    "docs":[
      {
           "_index":"lib",
           "_type":"user",
           "_id":1
      },
      {
           "_index":"lib",
           "_type":"user",
           "_id":AWdQF9axrlJvDlOTtvkF
      }
    ]
    }
    # kibana dev tools
    GET /_mget
    {
       "docs":[
          {
               "_index":"lib",
               "_type":"user",
               "_id":1
          },
          {
               "_index":"lib",
               "_type":"user",
               "_id":"AWdQF9axrlJvDlOTtvkF"
          }
      ]
    }
    # 指定获取的字段
    GET /_mget
    {
       "docs":[
          {
               "_index":"lib",
               "_type":"user",
               "_id":1,
               "_source":"interests"
          },
          {
               "_index":"lib",
               "_type":"user",
               "_id":"AWdQF9axrlJvDlOTtvkF",
               "_source":["interests","age"]
          },
            {
               "_index":"book",
               "_type":"novel",
               "_id":"5",
               "_source":["title","word_count"]
          }
      ]
    }

    # 相同index、type
    GET /lib/user/_mget
    {
       "docs":[
          {
               "_id":1
          },
          {
               "_id":"AWdQF9axrlJvDlOTtvkF"
          }
      ]
    }
    # 再简化
    GET /lib/user/_mget
    {
       "ids":["1","AWdQF9axrlJvDlOTtvkF"]
    }

使用Bulk API实现批量操作

  • bulk的格式:

    {
       action:{metadata}\n
      {resquestbody}\n
    }

    # action:行为
       # create:文档不存在时创建(如果存在使用会报错)
       # update:更新文档
       # index:创建新文档或替换已有文档
       # delete:删除一个文档
    # metedata:_index,_type,_id
  • 例子

    # 删除
    {"delete":{"_index":"lib","_type":"user","_id":"1"}}
    # 批量添加
    POST /lib/books/_bulk
    {"index":{"_id":"1"}}
    {"title":"Html5","price":45}
    {"index":{"_id":"2"}}
    {"title":"PHP","price":35}
    {"index":{"_id":"3"}}
    {"title":"Java","price":55}
    {"index":{"_id":"1"}}
    {"title":"Python","price":50}
    {"index":{"_id":"1"}}
    {"title":"Scala","price":48}
    # 批量添加
    POST /lib/books/_bulk
    {"delete":{"_index":"lib","_type":"books","_id":"4"}}
    {"create":{"_index":"tt","_type":"ttt","_id":"100"}}
    {"name":"lisi"}
    {"index":{"_index":"tt","_type":"ttt"}}
    {"name":"zhaosi"}
    {"update":{"_index":"lib","_type":"books","_id":"5"}}
    {"doc":{"price":58}}
  • bulk一次最大处理多少数据量

    • bulk会把将要处理的数据加载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小及复杂性,你的索引以及搜索的负载

    • 一般建议是1000-5000个文档,大小建议是5-15M,默认不能超过100M,可以再es的配置文件设置

ES基本操作的更多相关文章

  1. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  2. es使用postmain进行数据的增删改查

    es的基本安装 安装遇到的问题  java本地环境和es环境冲突 ​ https://www.cnblogs.com/q1359720840/p/14077049.html ​ ​ ,看要使用jdk1 ...

  3. jest for elasticsearch

    *elasticsearch(后面简称es) 背景: 目前项目应用中对es的操作用的是http(自己封装)的一套方法:有些数据处理起来还是需要定制开发处理,不是很方便.正好需要对本项目重新进行改造,于 ...

  4. elasticsearch索引自动清理

    一 es 基本操作 查看所有的索引文件:  curl -XGET http://localhost:9200/_cat/indices?v GET /_cat/indices?v DELETE /fi ...

  5. Spring Boot 集成 Elasticsearch 实战

    最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文 ...

  6. ElasticSearch详细笔记

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

  7. (九)整合 ElasticSearch框架,实现高性能搜索引擎

    整合 ElasticSearch框架,实现高性能搜索引擎 1.SpringBoot整合ElasticSearch 1.1 核心依赖 1.2 配置文件 1.3 实体类配置 1.4 数据交互层 1.5 演 ...

  8. Elasticsearch使用系列-ES增删查改基本操作+ik分词

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...

  9. ElasticSearch(三):ES单机版本基本操作之删除,修改,插入

    1. 创建索引 1.1 直接创建索引 可以直接使用head插件创建索引,指定分片数和备份数即可.如下图: 1.2 创建结构化索引 上图创建的索引,点开索引信息,mapping是空的,表示该索引的字段并 ...

随机推荐

  1. 一个非常有意思的蜜罐T-Pot 16.10

    In March 2016 we released T-Pot 16.03 and the positive feedback encouraged us to continue developmen ...

  2. HapMap

    HapMap五周年回顾 2011-01-12 | 作者: [关闭] 作者简介:曾长青,中国科学院北京基因组所研究员,博士生导师.CUSBEA奖学金.百人计划.杰出青年基金.首批新世纪百千万人才工程国家 ...

  3. 循环&信息添加&颜色修改

            #import "AViewController.h" @interface AViewController () <UIActionSheetDelegat ...

  4. http协议(四)http常用状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...

  5. ui设计学习路线图分享送给初学者

    本文来源:千锋UI设计 Ui设计师就业市场前景及薪资很可观,而且现在市场上对于ui设计师的人才需求也很大,所以,现在越来越多的人看好这一行业,纷纷投入到ui设计的学习中来,那么想新手想要学好ui设计, ...

  6. Linux中处理字符串

    获取字符串长度: ${#字符串变量名} 截取子串: 1. expr substr 字符串 起始位置 截取长度 2. 命令输出 | cut -c 起始位置-结束位置 命令输出 | cut -c &quo ...

  7. [Jmeter] 在jenkins上通过命令行运行时,针对单个listener生成的chart报告,并通过邮件发送出来

    We need to use cmdrunner-2.0.jar Firstly, download cmdrunner-2.0.jar from here:https://jmeter-plugin ...

  8. Intellij idea 系列教程之破解方法

    Intellij idea 系列教程之破解方法 Intellij idea 系列教程目录(https://www.cnblogs.com/binarylei/p/10347600.html) 到这个地 ...

  9. python 读取xml

    #!/usr/bin/python # -*- coding: UTF- -*- from xml.dom.minidom import parse import xml.dom.minidom # ...

  10. springboot server.address 配置问题

    1. server.address 为对应机器ip地址时 ,如 18.10.x.x 此时访问该服务只能使用 ip 访问 . 2. 配置为 127.0.0.1 时  可以使用 localhost  和  ...