Elasticsearch 索引操作和增删改查


Posted in Python onApril 19, 2022

接口幂等性

  • 0 接口幂等性:数学概念,多次请求,相当于一次请求
  • get,put,delete都是幂等性的接口
  • post 存在幂等性的问题
  • 前端速度很快,点了两次,会生成两个订单
  • 用户在访问新增页面时(提交订单)---》接口返回一个唯一id,提交订单,携带唯一id过来,后端判断这个唯一id是否被用过---》没用过,创建订单
  • 你在项目中碰到的问题和如何解决(项目收获)下订单,经常重复订单,点得快,幂等性问题,如何解决的

倒排索引

1.es介绍10个点

2.安装

-jdk :java开发环境

  • 官网下载es相应的版本,解压,到bin目录下启动elasticsearch.bat
  • 两个客户端(kibana:官方,发送请求,数据统计,展示,elasticsearch-head:第三方用node写的)
  • kibana跟es版本对应,bin路径下,直接启动
  • elasticsearch-head需要安装node环境,npm install ---》npm run start
  • kibana配置文件配置(copy一下,kibana监听的地址端口,随便名一个名,连接es的地址)
  • 修改es配置:允许跨域(浏览器的同源策略),cors:跨域资源共享,实现跨域
  • es的倒排索引(扩展阅读.md)
  • 把文章进行分词,对每个词建立索引

3 索引操作

# 索引操作---》数据库操作---》新增,删除,修改,查询
# 1 新增索引:
PUT lqz2     # lqz2就是索引名字
{
  "settings": {
    "index":{
      "number_of_shards":5,
      "number_of_replicas":1
    }
  }
}
# 2 查询索引
GET lqz2/_settings
返回结果
{
  "lqz2" : {
    "settings" : {
      "index" : {
        "creation_date" : "1588822389842",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "NBXIeVdHQ26vCuPn8_6uew",
        "version" : {
          "created" : "7050099"
        },
        "provided_name" : "lqz2"
      }
    }
  }
}
# 3 更新索引
PUT lqz2/_settings
{
  "number_of_replicas": 2
}
#4 删除lqz2索引
DELETE lqz2

4 文档基本增删查改

#1  新增文档
POST lqz2/_doc/1
{
  "title":"红楼梦",
  "price":12,
  "publish_addr":{
    "province":"黑龙江",
    "city":"鹤岗"
  },
  "publish_date":"2013-11-11",
  "read_num":199,
  "tag":["古典","名著"]
}
POST lqz2/_doc/2
{
  "title":"西游记",
  "price":22,
  "publish_addr":{
    "province":"上海",
    "city":"上海"
  },
  "publish_date":"2013-11-11",
  "read_num":66,
  "tag":["古典","小说"]
}
# 2 查询文档(更详细的查找,后面讲)
GET lqz2/_doc/2
# 3 修改文档
-覆盖式(原来的字段就没有了)
PUT lqz/_doc/1
{
  "title":"xxxx",
  "price":333,
  "publish_addr":{
    "province":"黑龙江",
    "city":"福州"
  }
}
-增量式(只修改某个字段)一定要注意包在doc中
POST lqz2/_doc/1/_update
{
  "doc":{
    "title":"xx"
  }
}
# 4 删除文档
DELETE lqz/_doc/1
# 5 批量获取
GET _mget
{
  "docs":[
    {
      "_index":"lqz2",
      "_type":"_doc",
      "_id":2
    },
    {
      "_index":"lqz2",
      "_type":"_doc",
      "_id":1
    }
    ]
}
# 6 批量插入
PUT test/_doc/2/_create
{
  "field1" : "value22"
}
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

5 文档查询

# 测试数据
PUT lqz/doc/1
{
  "name":"顾老二",
  "age":30,
  "from": "gu",
  "desc": "皮肤黑、武器长、性格直",
  "tags": ["黑", "长", "直"]
}
PUT lqz/doc/2
{
  "name":"大娘子",
  "age":18,
  "from":"sheng",
  "desc":"肤白貌美,娇憨可爱",
  "tags":["白", "富","美"]
}
PUT lqz/doc/3
{
  "name":"龙套偏房",
  "age":22,
  "from":"gu",
  "desc":"mmp,没怎么看,不知道怎么形容",
  "tags":["造数据", "真","难"]
}
# 两种方式
	-第一种(字符串查询)
  	GET lqz/doc/_search?q=from:gu
    GET lqz/doc/_search?q=age:22
  -查询的第二种方式(结构化)
  	GET lqz/doc/_search
    {
      "query": {
        "match": {
          "from": "gu"
        }
      }
    }
    GET lqz/doc/_search
    {
      "query": {
        "match": {
          "age": 22
        }
      }
    }
   GET lqz/doc/_search
    {
      "query": {
        "match": {
          "desc": "形容"
        }
      }
    }
GET lqz/doc/_search
{
  "query": {
    "match": {
      "tags": "造数据"
    }
  }
}

以上就是Elasticsearch文档索引基本操作增删改查示例的详细内容!

Python 相关文章推荐
python处理cookie详解
Feb 07 Python
Python中__init__和__new__的区别详解
Jul 09 Python
Python重新引入被覆盖的自带function
Jul 16 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
python 同时运行多个程序的实例
Jan 07 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
python2.7使用scapy发送syn实例
May 05 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
python中redis包操作数据库的教程
Apr 19 #Python
python中pymysql包操作数据库方法
Apr 19 #Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 #Python
python中urllib包的网络请求教程
Apr 19 #Python
python APScheduler执行定时任务介绍
Apr 19 #Python
Python数据可视化之Seaborn的安装及使用
python 闭包函数详细介绍
Apr 19 #Python
You might like
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
php检测url是否存在的方法
2015/04/14 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
Python3 assert断言实现原理解析
2020/03/02 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
英国健身专家:WIT Fitness
2021/02/09 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
开业庆典邀请函
2014/01/08 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
大学感恩节活动总结
2015/05/05 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL