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

河南官网网站建设报价uc浏览器关键词排名优化

河南官网网站建设报价,uc浏览器关键词排名优化,网站如何选择服务器,免费网站seo诊断目录 一、认识elaticsearch 1、什么是正向索引 2、什么是倒排索引 二、概念 1、说明 2、mysql和es的对比 三、mapping属性 1、定义 四、CRUD 1、查看es中有哪些索引库 2、创建索引库 3、修改索引库 4、删除索引库 5、新增文档 6、删除文档 5、条件查询 一、认识…

目录

一、认识elaticsearch

1、什么是正向索引

2、什么是倒排索引

二、概念

1、说明

2、mysql和es的对比

三、mapping属性

1、定义

四、CRUD

1、查看es中有哪些索引库

2、创建索引库

3、修改索引库

4、删除索引库

5、新增文档

6、删除文档

5、条件查询


一、认识elaticsearch

elasticsearch基于倒排索引结构

1、什么是正向索引

正向索引就像mysql数据库,如果根据非索引字段查询数据,会逐行获取表中所有数据,然后判断是否满足规则

例如:设置数据库中有title字段,为非索引字段流程如下:

1)用户搜索数据,条件是title符合`"%手机%"`

2)逐行获取数据,比如id为1的数据

3)判断数据中的title是否符合用户搜索条件

4)如果符合则放入结果集,不符合则丢弃。回到步骤1

2、什么是倒排索引

  • 文档:就是用来搜索的数据,等同于mysql数据库中的一条记录
  • 词条:利用分词器分出来的词条,例如数据中title为:我是中国人,分词器就可以分为:我 、是、 中国人、 中国、 国人等几个词条出来

* 将每一个文档的数据利用算法分词,得到一个个词条
* 创建表,每行数据包括词条、词条所在文档id、位置等信息
* 因为词条唯一性,可以给词条创建索引,例如hash表结构索引

流程:

1)用户输入条件`"华为手机"`进行搜索。

2)对用户输入内容**分词**,得到词条:`华为`、`手机`。

3)拿着词条在倒排索引中查找,可以得到包含词条的文档id:1、2、3。

4)拿着文档id到正向索引中查找具体文档。

  • 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是**根据文档找词条的过程。
  • 而倒排索引**则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是**根据词条找文档的过程。

二、概念

1、说明

elasticsearch是面向document存储的,一个doc就是数据库的一条记录,该条记录会被序列化成json的格式存入文档中,文档中包含很多的字段(filed)等同于数据库中的列

2、mysql和es的对比

三、mapping属性

1、定义

mapping是对文档中field的约束,例如对字段类型的约束。就像数据库中的表结构

  • * type:字段数据类型,常见的简单类型有:
    •   * 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
    •   * 数值:long、integer、short、byte、double、float、
    •   * 布尔:boolean
    •   * 日期:date
    •   * 对象:object
  • * index:是否创建索引,默认为true
  • * analyzer:使用哪种分词器
  • * properties:该字段的子字段

例如下面的json文档:

{
    "age": 21,
    "weight": 52.1,
    "isMarried": false,
    "info": "这是一个程序员",
    "email": "nuanqin@163.com",
    "score": [99.1, 99.5, 98.9],
    "name": {
        "firstName": "思",
        "lastName": "陈"
    }
}

对应的每个字段映射(mapping):

  • * age:类型为 integer;参与搜索,因此需要index为true;无需分词器
  • * weight:类型为float;参与搜索,因此需要index为true;无需分词器
  • * isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器
  • * info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart
  • * email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器
  • * score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器
  • * name:类型为object,需要定义多个子属性
  •   * name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器
  •   * name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

四、CRUD

可采用es的可视化工具kibana进行执行CRUD语句,

入口:kibana的Dev Tools

1、查看es中有哪些索引库

GET /_cat/indices?v

2、创建索引库

PUT /索引库名称
{"mappings": {"properties": {"字段名":{"type": "text","analyzer": "ik_smart"},"字段名2":{"type": "keyword","index": "false"},"字段名3":{"properties": {"子字段": {"type": "keyword"}}},// ...略}}
}

3、修改索引库

倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库**一旦创建,无法修改mapping**。

虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。

PUT /索引库名/_mapping
{"properties": {"新字段名":{"type": "integer"}}
}

4、删除索引库

    DELETE /索引库名

5、新增文档

新增文档类似于数据库的新增一条记录

POST /索引库名/_doc/文档id
{"字段1": "值1","字段2": "值2","字段3": {"子属性1": "值3","子属性2": "值4"},// ...
}#例如:
POST /heima/_doc/1
{"info": "我是一个程序员","email": "nuanqin@163.com","name": {"firstName": "思","lastName": "陈"}
}

6、删除文档

DELETE /{索引库名}/_doc/id值

5、条件查询

基本语法:

  • * 请求方式:PUT
  • * 请求路径:/索引库名,可以自定义,若不带索引库名代表查询所有库
  • * 请求参数:mapping映射
  • *_search代表搜索
#带索引库名 -->
GET /index_name/_search
{"query": {"match_all": {}}
}#不带索引库名
GET /_search
{"query": {"match_all": {}}
}#用于搜索字段中包含特定文本的文档:
GET /index_name/_search
{"query": {"match": {"message": "error"}}
}#精确匹配字段值
GET /index_name/_search
{"query": {"term": {"status": "200"}}
}#组合查询多个条件
GET /index_name/_search
{"query": {"bool": {"must": [{ "match": { "message": "error" } },{ "term": { "status": "200" } }]}}
}#过滤特定范围内的数据
GET /my-index/_search
{"query": {"range": {"field_name": {"gte": "2024-01-01","lte": "2024-01-31"}}}
}#分页查询
GET /my-index/_search
{"query": {"match_all": {}},"from": 0,"size": 10
}#排序查询
GET /my-index/_search
{"query": {"match_all": {}},"sort": [{ "field_name": { "order": "asc" } }]
}#完整示例
GET /my-index/_search
{"query": {"bool": {"must": [{ "match": { "title": "Elasticsearch" } }],"filter": [{ "range": { "timestamp": { "gte": "2024-01-01", "lte": "2024-01-31" } } }],"must_not": [{ "term": { "status": "deleted" } }]}},"aggs": {"status_count": {"terms": {"field": "status","size": 10}}},"sort": [{ "timestamp": { "order": "desc" } }],"from": 0,"size": 10
}

http://www.dtcms.com/wzjs/313765.html

相关文章:

  • 企业做网站分一般为哪几种类型网站优化排名哪家好
  • 蓝色清新phpcms企业网站模板职业培训机构
  • 做视频网站该把视频文件传到哪长尾关键词挖掘熊猫
  • 湖北网站建设 鄂 icp网站优化的方法
  • 自己做网站导航自助优化排名工具
  • 建设一个有影响力的网站百度经验官网入口
  • html导航栏模板四川seo整站优化
  • 做一个介绍网站多少钱直通车推广
  • 台州手机端建站模板福州seo扣费
  • 新疆示范工程建设服务平台网站网站定制的公司
  • 电子商务网站建设方案书科学新概念seo外链平台
  • 做鸡直播网站深圳互联网公司排行榜
  • 东莞建设网站的位置百度指数分析案例
  • 有专门做牙膏的网站吗海外营销推广
  • 编程和做网站那个号政府免费培训 面点班
  • 网站建设 定制武汉网站排名推广
  • 充电宝网站建设策划书seo手机搜索快速排名
  • 工程合同模板广州百度搜索排名优化
  • 重庆做网站优化推广的公司seo百家论坛
  • 做网站系统开发的意义免费网站怎么注册
  • 机械类网站用什么做背景常用的seo网站优化排名
  • 网站交易模块怎么做广告软文200字
  • 名者观看网站做网络推广好吗
  • 东南亚营销型网站建设与网络推广淘宝搜索指数
  • 做珠宝商城网站seo基础课程
  • 西安app定制开发公司seo推广排名
  • 平顶山做网站的公司微信社群营销推广方案
  • 网站开发流程包括今日国际新闻头条15条简短
  • 网站动态背景怎么做现在做网络推广都有什么方式
  • 管理网站怎么做的在线企业管理培训课程