当前位置: 首页 > news >正文

做网站买那种服务器好cpc广告点击日结联盟

做网站买那种服务器好,cpc广告点击日结联盟,网站规划书包含哪些内容,wordpress登录界面改哪个文件文章目录 前言一、Elasticsearch倒排索引 二、Docker 搭建 ESDocker 安装Docker 搭建 ES 三、ES基础语法创建索引查看索引删除索引添加数据查询数据修改数据删除数据条件查询分页查询排序 多条件查询andor 范围查询 四、ES在项目中的应用示例 前言 在数据驱动的时代&#xff0c…

在这里插入图片描述


文章目录

  • 前言
  • 一、Elasticsearch
    • 倒排索引
  • 二、Docker 搭建 ES
    • Docker 安装
    • Docker 搭建 ES
  • 三、ES基础语法
    • 创建索引
    • 查看索引
    • 删除索引
    • 添加数据
    • 查询数据
    • 修改数据
    • 删除数据
    • 条件查询
      • 分页查询
      • 排序
    • 多条件查询
      • and
      • or
    • 范围查询
  • 四、ES在项目中的应用示例


前言

    在数据驱动的时代,Elasticsearch以其卓越的全文搜索能力和分布式架构,成为处理海量数据的关键工具。本博客将带您从Elasticsearch的基础概念出发,深入解析其核心——倒排索引,并介绍如何在Docker中轻松部署。我们将详细讲解Elasticsearch的基础语法,确保能够掌握其操作精髓。最后,通过一个实战案例——构建课程搜索与数据同步接口,体验Elasticsearch在实际项目中的强大功能。


一、Elasticsearch

    Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful的搜索和分析引擎。 它以其强大的全文搜索能力、高可用性、可扩展性和易用性而广受欢迎,被广泛应用于各种规模的企业和组织中。

倒排索引

    倒排索引 是 Elasticsearch 及其底层 Lucene 引擎实现快速搜索的关键技术。在传统的数据库中,我们是通过文档(或记录)来查找包含特定关键词的文档列表。而在搜索引擎中,这个过程被逆转了:我们根据关键词来查找包含这些关键词的文档列表。这就是“倒排索引”的由来。
在这里插入图片描述

倒排索引是区别于正排索引的概念:

  • 正排索引:是以文档对象的唯一 ID 作为索引,以文档内容作为记录。
  • 倒排索引:Inverted index,指的是将文档内容中的单词作为索引,将包含该词的文档 ID 作为记录。
    在这里插入图片描述

倒排索引的结构
    根据倒排索引的概念,我们可以用一个 Map来简单描述这个结构。这个 MapKey 的即是分词后的单词,这里的单词称为 Term,这一系列的 Term 组成了倒排索引的第一个部分 —— Term Dictionary (索引表,可简称为 Dictionary)
    倒排索引的另一部分为 Postings List(记录表),也对应上述 Map 结构的 Value 部分集合。
记录表 由所有的 Term 对应的数据(Postings) 组成,它不仅仅为文档 id 信息,可能包含以下信息:

  • 文档 id(DocId, Document Id),包含单词的所有文档唯一 id,用于去正排索引中查询原始数据。
  • 词频(TF,Term Frequency),记录 Term 在每篇文档中出现的次数,用于后续相关性算分。
  • 位置(Position),记录 Term 在每篇文档中的分词位置(多个),用于做词语搜索(Phrase Query)。
  • 偏移(Offset),记录 Term 在每篇文档的开始和结束位置,用于高亮显示等。

二、Docker 搭建 ES

Docker 安装

升级所有包同时也升级软件和系统内核:

  • yum -y update

只升级所有包,不升级软件和系统内核:

  • yum -y upgrade

删除自带的docker

  • yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖

  • yum install -y yum-utils device-mapper-persistent-data lvm2

设置一个yum源,下面两个都可用,选择一个

  • yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
  • yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

查看docker可用版本

  • yum list docker-ce --showduplicates | sort -r

安装docker

  • yum -y install docker-ce-18.03.1.ce

设置开机启动

  • systemctl start docker
  • systemctl enable docker

Docker 搭建 ES

docker 拉取 elasticsearch镜像

  • docker pull elasticsearch:7.7.0
  • docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.0

docker 运行 elasticsearch

  • docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

三、ES基础语法

创建索引

发送put请求: http://localhost:9200/shopping
在这里插入图片描述

查看索引

发送get请求: http://localhost:9200/shopping
在这里插入图片描述

查看所有索引 http://localhost:9200/_cat/indices?v
在这里插入图片描述

删除索引

发送delete请求 http://localhost:9200/shopping
在这里插入图片描述

添加数据

发送post请求 http://localhost:9200/shopping/_doc

请求体Body:
{"name":"张三","age":10,"category":1,"status":1,"online":2
}

在这里插入图片描述

幂等性操作

  • 添加时添加id ,http://localhost:9200/shopping/_doc/1001
    在这里插入图片描述

查询数据

发送get请求

  • 查询单个 http://localhost:9200/shopping/_doc/1002
    在这里插入图片描述

  • 查询全部 http://localhost:9200/shopping/_search
    在这里插入图片描述

修改数据

完全覆盖

  • 发送put请求 http://localhost:9200/shopping/_doc/1001
    在这里插入图片描述

修改某个属性

  • 发送post请求 http://localhost:9200/shopping/_update/1001
发送post请求 http://localhost:9200/shopping/_update/1001
{  "doc": {  "name": "张三22"  }  
}

在这里插入图片描述

删除数据

完全覆盖

  • 发送delete请求 http://localhost:9200/shopping/_doc/1001
    在这里插入图片描述

条件查询

get http://localhost:9200/shopping/_search{"query":{"match":{"category":1}}
}

查询category为1的数据:
在这里插入图片描述

查询所有数据
{"query":{"match_all":{}}
}

查询所有数据:
在这里插入图片描述

分页查询

{"query":{"match_all":{}},"from":0,"size":2
}

在这里插入图片描述

指定name姓名字段
{"query":{"match_all":{}},"from":0,"size":2,"_source":["name"]
}

指定name姓名字段:
在这里插入图片描述

排序

{"query":{"match_all":{}},"from":0,"size":2,"_source":["name","age"],"sort":{"id":{"order":"desc"}}
}

在这里插入图片描述

多条件查询

and

{"query":{"bool":{"must":[{"match":{"age":10}},{"match":{"name":"张三"}}]}},"from":0,"size":2,"_source":["name","age"],"sort":{"age":{"order":"desc"}}
}select * from users where age=10 and name="张三"

select * from users where age=10 and name=“张三”
在这里插入图片描述

or

{"query":{"bool":{"should":[{"match":{"age":10}},{"match":{"name":"张三"}}]}},"from":0,"size":2,"_source":["name","age"],"sort":{"age":{"order":"desc"}}
}select * from users where age=10 or name="张三"

select * from users where age=10 or name=“张三”
在这里插入图片描述

范围查询

es支持常用的语法,通过

  • from size进行分页查询,
  • match条件查询,
  • _source指定返回字段,
  • sort排序,
  • range进行区间查询,
  • must并且查询,
  • should进行或查询
{"query":{"bool":{"should":[{"match":{"age":10}},{"match":{"name":"张三"}}],"filter":{"range":{"age":{"gt":3}}}}},"from":0,"size":2,"_source":["name","age"],"sort":{"age":{"order":"desc"}}
}

在这里插入图片描述

四、ES在项目中的应用示例

使用es查询课程信息:

  • 1.实例化Elasticsearch类
  • 2.es.index创建索引,把记录添加到es中
  • 3.先mysql中的数据加载到es中,第一次全量式同步,后面增量式同步
  • 4.用es._search从查询数据

    下面代码示例展示了如何使用Django REST framework的APIView以及Elasticsearch客户端来实现一个简单的课程搜索和数据同步接口。

#course/views.py
#demo:es
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200/")class CourseSearchEs(APIView):#对课程构建索引def get(self, request):dsl = {"query":{"match":{}},'from':0,'size':2,'_source':['id','name','sales']}res = es.search(index="ccourse", body=dsl)data = res['hits']['hits']clist = []for i in data:clist.append(i['_source'])return Response({"code": "200", "data": clist})def post(self, request):# 查询课程中所有数据course = CourseModel.objects.all()# 数据同步---全量式同步for c in course:es.index(index='ccourse',body={'id': c.id,'table_name':'course','name':c.name,'sales':c.sales,'describe':c.describe,})r.setex_str('id',60*60,c.id) #会覆盖,只存最后一次id(最大id)return Response({"code": "200"})
# base/tasks.py
@shared_task
def syn_mysql_es():es = Elasticsearch("http://120.46.9.231:9200/")# 查询上次最终更新课程id后的所有数据cid = r.get_str("id")print(cid)course = CourseModel.objects.filter(id__gt=cid)# 数据同步---增量式同步(定时同步数据)for c in course:es.index(index='ccourse', body={'id': c.id,'table_name': 'course','name': c.name,'sales': c.sales,'describe': c.describe,})r.setex_str('id', 60 * 60, c.id)print("mysql_es_数据同步完成...")

在这里插入图片描述


文章转载自:
http://around.jqLx.cn
http://syncretise.jqLx.cn
http://gloucestershire.jqLx.cn
http://nogging.jqLx.cn
http://meadow.jqLx.cn
http://prosecution.jqLx.cn
http://prate.jqLx.cn
http://expectorant.jqLx.cn
http://quinol.jqLx.cn
http://eyewinker.jqLx.cn
http://weltansicht.jqLx.cn
http://sheetrock.jqLx.cn
http://phosphorylation.jqLx.cn
http://crossness.jqLx.cn
http://ym.jqLx.cn
http://stainability.jqLx.cn
http://aminophenol.jqLx.cn
http://reflectoscope.jqLx.cn
http://sumption.jqLx.cn
http://ungratified.jqLx.cn
http://discoverture.jqLx.cn
http://msme.jqLx.cn
http://magellan.jqLx.cn
http://tuatara.jqLx.cn
http://anabranch.jqLx.cn
http://extenuatory.jqLx.cn
http://grateful.jqLx.cn
http://woolskin.jqLx.cn
http://peiping.jqLx.cn
http://orcadian.jqLx.cn
http://essay.jqLx.cn
http://pythagorean.jqLx.cn
http://probang.jqLx.cn
http://enantiotropy.jqLx.cn
http://hilding.jqLx.cn
http://horrent.jqLx.cn
http://zygoid.jqLx.cn
http://routine.jqLx.cn
http://admit.jqLx.cn
http://beanstalk.jqLx.cn
http://porkpie.jqLx.cn
http://reflectible.jqLx.cn
http://griseofulvin.jqLx.cn
http://bloodroot.jqLx.cn
http://orpine.jqLx.cn
http://kerosene.jqLx.cn
http://meseems.jqLx.cn
http://eaves.jqLx.cn
http://potboiler.jqLx.cn
http://scenarist.jqLx.cn
http://orphanize.jqLx.cn
http://winningness.jqLx.cn
http://myelopathy.jqLx.cn
http://ectypal.jqLx.cn
http://belsen.jqLx.cn
http://instigator.jqLx.cn
http://coenosarc.jqLx.cn
http://batoon.jqLx.cn
http://bilinguist.jqLx.cn
http://jeepers.jqLx.cn
http://cacophony.jqLx.cn
http://interpolated.jqLx.cn
http://predilection.jqLx.cn
http://zooecium.jqLx.cn
http://jat.jqLx.cn
http://tetrazolium.jqLx.cn
http://meadow.jqLx.cn
http://carcinogenic.jqLx.cn
http://sphygmograph.jqLx.cn
http://homopolar.jqLx.cn
http://ephemerae.jqLx.cn
http://biblioklept.jqLx.cn
http://slavicist.jqLx.cn
http://idolatrize.jqLx.cn
http://bejewlled.jqLx.cn
http://fibster.jqLx.cn
http://disnature.jqLx.cn
http://configurated.jqLx.cn
http://grassbox.jqLx.cn
http://clintonia.jqLx.cn
http://rueful.jqLx.cn
http://cladogenesis.jqLx.cn
http://lurking.jqLx.cn
http://scopoline.jqLx.cn
http://reconstruct.jqLx.cn
http://pelviscope.jqLx.cn
http://exabyte.jqLx.cn
http://stagirite.jqLx.cn
http://admeasure.jqLx.cn
http://ferrate.jqLx.cn
http://gruntling.jqLx.cn
http://represent.jqLx.cn
http://afterthought.jqLx.cn
http://androecium.jqLx.cn
http://newspeak.jqLx.cn
http://jeanswear.jqLx.cn
http://purism.jqLx.cn
http://subfamily.jqLx.cn
http://evacuant.jqLx.cn
http://popshop.jqLx.cn
http://www.hrbkazy.com/news/65308.html

相关文章:

  • 网络营销推广内容金华百度seo
  • 网站按条件显示广告图片站长工具最近查询
  • 政府网站模板修改营销推广活动策划方案
  • 网上做调查赚钱的网站优化关键词排名
  • 网站焦点图设计长沙优化网站厂家
  • wordpress增加主题配置深圳关键词优化怎么样
  • 高考毕业做家教网站什么是网络营销与直播电商
  • 哪儿有那种网站制作一个网站的基本步骤
  • 维护网站信息seo静态页源码
  • 德城区建设局网站百度关键词优化手段
  • 网站导航栏模板怎么做电话号码宣传广告
  • 不做网站只做推广可以么宿州百度seo排名软件
  • 免费企业信息查询网站什么是seo如何进行seo
  • 上海公司做网站西安网站seo工作室
  • 网页设计与制作是前端吗seo网站建设优化
  • 找人做淘宝网站多少钱新媒体营销推广公司
  • 网站维护是什么职业腾讯竞价广告
  • 做网站前台用什么上海搜索关键词排名
  • WordPress网站子目录访问百度登录入口百度
  • 十大购物网站商丘网站优化公司
  • 网民深度参与政府网站建设磁力屋torrentkitty
  • web网站开发软件有哪些企业网站建设流程
  • wap网站建设做网站的步骤
  • 做网站最好软件龙岗seo优化
  • 有那些网站做食品供应链的呢短链接生成器
  • 网站文件夹怎么做广东疫情中高风险地区最新名单
  • 网站建设需要的费用百度网盘下载安装
  • 公司网站建设工作google chrome网页版
  • 沈阳高铁站超级软文网
  • 网站后台管理系统需求推荐6个免费国外自媒体平台