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使用Socket(Https)Post登录百度的实现代码
May 18 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
python中update的基本使用方法详解
Jul 17 Python
python中eval与int的区别浅析
Aug 11 Python
Python3分析处理声音数据的例子
Aug 27 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 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
Apache服务器无法使用的解决方法
2013/05/08 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
javascript操作符"!~"详解
2015/02/10 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
在微信小程序中使用vant的方法
2019/06/07 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python多线程编程简单介绍
2015/04/13 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
快速创建python 虚拟环境
2020/11/28 Python
django中ImageField的使用详解
2020/12/21 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
灵泰克Java笔试题
2016/01/09 面试题
应届中专生自荐书范文
2014/02/13 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
产品生产计划书
2014/05/07 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers
Redis Lua脚本实现ip限流示例
2022/07/15 Redis