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

网站建设推广关键词市场推广方式有哪几种

网站建设推广关键词,市场推广方式有哪几种,网站建设颜色注意事项,网站建设 搜狐号关注:CodingTechWork 引言 在当今大数据应用中,Elasticsearch(简称 ES)以其高效的全文检索、分布式处理能力和灵活的查询语法,广泛应用于各类日志分析、用户行为分析以及实时数据查询等场景。通过 ES,用户…

关注:CodingTechWork

引言

  在当今大数据应用中,Elasticsearch(简称 ES)以其高效的全文检索、分布式处理能力和灵活的查询语法,广泛应用于各类日志分析、用户行为分析以及实时数据查询等场景。通过 ES,用户可以轻松地查询大量数据、进行复杂的数据筛选、聚合分析等操作。
  本文将结合实际应用场景,深入讲解 Elasticsearch 基础和高级查询语句的使用原理与技巧,帮助读者通过实践掌握 ES 查询的核心概念和技术。

索引

索引设计与数据模型

  首先,我们假设demo_operate_log_data_m202501_read索引存储了用户的基本信息。每个文档表示一个用户,字段包括:

user_id:用户唯一标识符(例如:user_123)
name:用户姓名
age:用户年龄
gender:用户性别(如:male 或 female)
email:用户邮箱
phone_number:用户电话号码
register_date:用户注册时间(日期类型)
last_login:用户最后登录时间(日期类型)
location:用户所在地理位置(如:Beijing、Shanghai)

  这些字段将在我们接下来的查询中作为查询条件,以获取用户的详细信息。下面将根据不同的查询需求展示 Elasticsearch 查询的基础和高级用法。

创建索引

  在 Elasticsearch 中,创建索引时,通常会定义索引的映射(mapping),指定字段类型、分析器等属性。下面是一个示例索引创建语句,针对 demo_operate_log_data_m202501_read索引,我们假设它包含了与用户相关的字段。

示例:demo_operate_log_data_m202501_read索引创建语句

PUT /demo_operate_log_data_m202501_read
{"mappings": {"properties": {"user_id": {"type": "keyword"  // 用户唯一标识符,通常用 keyword 类型以便精确匹配},"name": {"type": "text"  // 用户姓名,使用 text 类型以支持全文搜索},"age": {"type": "integer"  // 用户年龄,使用整数类型},"gender": {"type": "keyword"  // 用户性别,通常是固定值,使用 keyword 类型},"email": {"type": "keyword"  // 用户邮箱,使用 keyword 类型},"phone_number": {"type": "keyword"  // 用户电话号码,使用 keyword 类型},"register_date": {"type": "date"  // 注册时间,使用日期类型},"last_login": {"type": "date"  // 最后登录时间,使用日期类型},"location": {"type": "text"  // 用户所在位置,使用 text 类型以支持全文搜索}}}
}

解释:

  • user_id:使用 keyword 类型,这样可以确保查询时进行精确匹配,因为 keyword 不会被分词。
  • name:使用 text 类型,支持全文搜索,可以在姓名中进行模糊搜索。
  • age:使用 integer 类型,用于存储年龄的整数值。
  • gender、email 和 phone_number:使用 keyword 类型,这些字段通常会是固定值或标识符,适合精确查询。
  • register_date 和 last_login:使用 date 类型,适合存储日期时间格式数据。
  • location:使用 text 类型,以便对用户的地理位置信息进行全文搜索。

插入数据

  接下来我们将根据刚才定义的demo_operate_log_data_m202501_read索引,插入一些示例数据。这些数据将包括用户的user_id、name、age、gender、email、phone_number、register_date、last_login 和 location字段。

POST /demo_operate_log_data_m202501_read/_doc/1
{"user_id": "U001","name": "Alice Wang","age": 29,"gender": "female","email": "alice.wang@example.com","phone_number": "+86-13800000001","register_date": "2023-01-15T10:30:00","last_login": "2025-01-05T15:45:00","location": "Beijing, China"
}POST /demo_operate_log_data_m202501_read/_doc/2
{"user_id": "U002","name": "Bob Zhang","age": 34,"gender": "male","email": "bob.zhang@example.com","phone_number": "+86-13800000002","register_date": "2022-06-10T08:20:00","last_login": "2025-01-06T09:00:00","location": "Shanghai, China"
}POST /demo_operate_log_data_m202501_read/_doc/3
{"user_id": "U003","name": "Charlie Li","age": 25,"gender": "male","email": "charlie.li@example.com","phone_number": "+86-13800000003","register_date": "2024-03-22T14:10:00","last_login": "2025-01-07T18:30:00","location": "Guangzhou, China"
}POST /demo_operate_log_data_m202501_read/_doc/4
{"user_id": "U004","name": "David Liu","age": 40,"gender": "male","email": "david.liu@example.com","phone_number": "+86-13800000004","register_date": "2020-11-18T16:50:00","last_login": "2025-01-04T12:00:00","location": "Shenzhen, China"
}POST /demo_operate_log_data_m202501_read/_doc/5
{"user_id": "U005","name": "Eva Zhang","age": 31,"gender": "female","email": "eva.zhang@example.com","phone_number": "+86-13800000005","register_date": "2021-09-30T11:00:00","last_login": "2025-01-06T16:10:00","location": "Chengdu, China"
}

在这里插入图片描述
在这里插入图片描述

解释:

  • 每条数据通过 POST 请求插入到 Elasticsearch 索引demo_operate_log_data_m202501_read 中。
  • 数据中的 user_id 为每个用户的唯一标识符。
  • name、age、gender、email、phone_number、register_date、last_login 和 location 都是与用户相关的属性,按需求填充相应的信息。
  • 日期格式为yyyy-MM-dd'T'HH:mm:ss,符合 Elasticsearch 的日期格式。

插入成功后的输出:

  插入数据成功后,Elasticsearch 会返回类似下面的响应(每个请求的响应可能有所不同,以下是一个例子):

{"_index": "demo_operate_log_data_m202501_read","_id": "1","_version": 1,"result": "created","_shards": {"total": 1,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1
}

  每个用户的文档都会被成功插入到索引中,并可以通过 ID 或查询来访问。

基础查询

精确匹配查询 (term 查询)

在 Elasticsearch 中,精确匹配查询通常使用 term 查询。假设我们要查询 user_id 为 U001 的用户基本信息,可以使用如下的 term 查询:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"term": {"user_id": "U001"}}
}

在这里插入图片描述

解释:

  • term 查询用于精确匹配字段的值。
  • 如果 user_id 在映射中被定义为 keyword 类型,那么它会按照原样进行精确匹配。

匹配查询 (match 查询)

对于文本类型的字段,match 查询能够实现更灵活的搜索。例如,我们要查询所有名字包含 “John” 的用户:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"match": {"name": "Charlie Li"}}
}

在这里插入图片描述

解释:

  • match 查询适用于全文搜索,ES 会对文本字段进行分词后进行搜索。
  • 对于如 name 这样的文本字段,match 查询可以匹配到所有包含 “Charlie Li” 的用户,无论是名字中间、开始或结束部分。

范围查询 (range 查询)

如果我们想查询年龄在 20 到 30 岁之间的用户,可以使用 range 查询:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"range": {"age": {"gte": 20,"lte": 30}}}
}

在这里插入图片描述

解释:

  • range 查询适用于数字或日期类型字段。通过设置 gte(大于或等于)和 lte(小于或等于)来定义一个范围。
  • 该查询返回所有年龄在 20 到 30 岁之间的用户。

布尔查询 (bool 查询)

布尔查询可以将多个查询条件组合起来。假设我们要查询年龄在 20 到 30 岁之间,且性别为 “female” 的用户,可以使用 bool 查询:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"bool": {"must": [{"range": {"age": {"gte": 20,"lte": 30}}},{"term": {"gender": "female"}}]}}
}

在这里插入图片描述

解释:

  • bool 查询结合了多个查询条件,其中must 表示条件必须满足。
  • range 查询筛选年龄,term 查询筛选性别。
  • must 可以包含任意多个查询子句,适用于复杂的多条件组合查询。

高级查询

聚合查询 (aggregations)

聚合查询允许我们对数据进行统计、分组和汇总分析。假设我们需要统计每个年龄段内的用户数量,可以使用 range 聚合查询:

GET /demo_operate_log_data_m202501_read/_search
{"size": 0,"aggs": {"age_groups": {"range": {"field": "age","ranges": [{"to": 18},{"from": 18,"to": 30},{"from": 30,"to": 50},{"from": 50}]}}}
}

在这里插入图片描述

解释:

  • 该查询使用range聚合将用户的年龄划分为不同的区间,并统计每个区间内的用户数量。
  • size: 0 表示不返回文档内容,只返回聚合结果。
    若size不为0,则返回文档内容。
    在这里插入图片描述

多字段匹配查询 (multi_match 查询)

如果我们需要在多个字段上进行搜索,例如查询包含 “Charlie Li” 的用户,并且可以在 name、email 和 phone_number 等字段中匹配,我们可以使用 multi_match 查询:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"multi_match": {"query": "Charlie","fields": ["name","email","phone_number"]}}
}

在这里插入图片描述

解释:

  • multi_match 查询可以在多个字段中查找与查询词匹配的文档,适用于需要在多个字段中执行类似的查询。
  • fields参数指定要查询的字段列表,query 是我们要搜索的关键词。
  • 默认情况下,multi_match 查询会在所有指定的字段中查找,只要其中一个字段包含查询词中的任意词,文档就会匹配并返回。例如,在你的查询中,如果 name 字段匹配 “Charlie”,或者 email 字段匹配 “Li”(或者两者都有),文档都会被返回。

分页查询 (from 和 size 参数)

在面对大量数据时,通常会进行分页查询,以分批次返回查询结果。假设我们要查询第 2 页的用户,每页显示 2 条记录:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"match_all": {}}
}GET /demo_operate_log_data_m202501_read/_search
{"query": {"match_all": {}},"from": 1,"size": 2
}

先验证查看全部的
在这里插入图片描述
再分页查
在这里插入图片描述

解释:

  • query -> match_all:match_all 查询会返回该索引中的所有文档。这是一种无条件匹配所有文档的查询,通常用于检索整个索引的数据。
  • from: 1:这是分页的参数之一,表示从第 2 条记录开始(从 0 开始计数)。所以会跳过第 1 条文档,返回从第 2 条文档开始的结果。
  • size: 2:这个参数控制每次查询返回的文档数量。设置为 2 表示查询会返回 2 条结果。

字段排序查询 (sort 参数)

在某些情况下,我们需要对查询结果进行排序。例如,查询最新注册的 2 个用户,可以按 register_date字段进行排序:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"match_all": {}},"sort": [{"register_date": {"order": "desc"}}],"_source": ["user_id", "name", "register_date"]
}GET /demo_operate_log_data_m202501_read/_search
{"query": {"match_all": {}},"sort": [{"register_date": {"order": "desc"}}],"size": 2
}

先验证看所有的排序
在这里插入图片描述
排序筛选前两个
在这里插入图片描述

解释:

  • sort 参数用于指定排序规则,register_date 字段按降序排列,表示返回最新注册的用户。
  • size 限制每次返回的记录数量。

模糊查询 (fuzzy 查询)

如果用户输入的查询条件可能包含拼写错误,fuzzy 查询可以帮助我们进行模糊匹配。例如,我们要查询姓氏为 “Charlie Li” 的用户,但用户可能输入 “Charlie Lixxx”:

GET /demo_operate_log_data_m202501_read/_search
{"query": {"bool": {"should": [{"fuzzy": {"name": {"value": "Zhang","fuzziness": "AUTO"}}}]}}
}

在这里插入图片描述

解释:

  • bool查询:bool 查询的 should 子句意味着至少满足其中一个条件。当前查询中,只有一个模糊查询条件。
  • fuzzy 查询:fuzzy查询是用于模糊匹配的。在这里,查询目标是 name 字段,查询的关键词是 “Zhang”,模糊度为 "AUTO",即自动选择最佳的模糊度。
  • fuzziness: "AUTO":"AUTO" 表示根据字符串的长度自动选择合适的模糊度。例如,短字符串可能只会有一个字符的差异(fuzziness: 1),而较长的字符串可能允许更多的字符差异(fuzziness: 2 或更多)。

总结

  通过本篇博客,我们详细介绍了 Elasticsearch 的基础和高级查询语法。我们展示了如何使用精确匹配查询(term)、全文搜索(match)、范围查询(range)、布尔查询(bool)等技术,帮助开发者快速检索用户基础信息。同时,我们还探讨了如何进行数据统计、聚合查询、多字段匹配等。

http://www.hengruixuexiao.com/news/30509.html

相关文章:

  • 旅游网站开发 结束语服务推广软文范例
  • 即时通讯软件星链seo管理
  • 郑州网站制作报价百度app官方下载安装
  • 手机网站制作教程视频教程济南新闻头条最新事件
  • 不想花钱怎么做网站关键词优化seo多少钱一年
  • wordpress 自动图片页面优化的方法
  • php如何做音乐网站网店推广的作用
  • 湖南网站建设推广廊坊seo排名公司
  • 网络教育网站如何做营销推广seo外包公司费用
  • 淘宝网站代理怎么做东莞今天最新消息新闻
  • uc官方网站开发中心2021年中国关键词
  • 17.zwd一起做网站池尾站下列哪些店铺适合交换友情链接
  • 郑州网站建设设计公司百度关键词排名原理
  • 百度竞价做网站建设百度如何添加店铺位置信息
  • 宁波企业网站推广效果好制作网站
  • b2b网站栏目建网站找哪个公司
  • 帝舵手表官方网站seo综合排名优化
  • 做网站可以不用框架吗本周国内重大新闻十条
  • 网站建设制作设计营销公司南宁少女长尾关键词挖掘
  • 手机网站注册高级seo是什么职位
  • 是做网站好还是做游戏好企业管理系统
  • 优质的集团网站建设微信公众号怎么开通
  • 西安做网站的公司怎么进行网站关键词优化
  • 江西省城乡和住房建设厅网站seo分析
  • 深圳网站建设李天亮新媒体营销
  • ps个人网站设计总结教程seo推广排名网站
  • 网站开发用什么框架好如何做个网站推广自己产品
  • 如何做网站对话框高级seo课程
  • 做垃圾词影响网站排名吗免费发布友链
  • 自己做发卡网站活动策划公司