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检测lvs real server状态
Jan 22 Python
Python中正则表达式的用法实例汇总
Aug 18 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
python队列queue模块详解
Apr 27 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
Python类继承和多态原理解析
Feb 05 Python
python_mask_array的用法
Feb 18 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
Matplotlib中rcParams使用方法
Jan 05 Python
python 学习GCN图卷积神经网络
May 11 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中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
js压缩利器
2007/02/20 Javascript
newxtree.js代码
2007/03/13 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
改进Django中的表单的简单方法
2015/07/17 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python字符串下标与切片及使用方法
2020/02/13 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
高中历史教学反思
2014/02/08 职场文书
争先创优个人总结
2015/03/04 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书