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进程间通信用法实例
Jun 04 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
python 写的一个爬虫程序源码
Feb 28 Python
详谈Python基础之内置函数和递归
Jun 21 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
简单实现python聊天程序
Apr 01 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python3中的bytes和str类型详解
May 02 Python
python监控nginx端口和进程状态
Sep 06 Python
django框架auth模块用法实例详解
Dec 10 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
在Python中如何使用yield
Jun 07 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
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python中endswith()函数的基本使用
2015/04/07 Python
python绘制直线的方法
2018/06/30 Python
Python selenium自动化测试模型图解
2020/04/15 Python
python 读取、写入txt文件的示例
2020/09/27 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
几个人围成一圈的问题
2013/09/26 面试题
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Python保存并浏览用户的历史记录
2022/04/29 Python