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

中国建设人才服务信息网是什么网站无锡网络推广公司哪家好

中国建设人才服务信息网是什么网站,无锡网络推广公司哪家好,做搜狗网站排名,网站建设整个流程图一、ES数据基础类型 1、数据类型 字符串 主要包括: text和keyword两种类型#xff0c;keyword代表精确值不会参与分词#xff0c;text类型的字符串会参与分词处理 数值 包括: long, integer, short, byte, double, float 布尔值 boolean 时间 date 数组 数组类型不…一、ES数据基础类型 1、数据类型 字符串 主要包括: text和keyword两种类型keyword代表精确值不会参与分词text类型的字符串会参与分词处理 数值 包括: long, integer, short, byte, double, float 布尔值 boolean 时间 date 数组 数组类型不需要专门定义只要插入的字段值是json数组就行 GEO类型 主要涉及地理信息检索、多边形区域的表达 2、textkeyword使用注意 text类型支持全文搜索因为text涉及分词所以可以配置使用什么分词器尤其涉及中文分词。 实际项目中如果不需要模糊搜索的字符类型可以选择keyword类型例如手机号、email、微信的openid等等如果选text类型可能会出现搜出一大堆相似的数据而且不是精确的数据。 二、query语法 query子句主要用于编写查询条件类似于SQL中的where语句。 query子句主要用于编写类似SQL的where语句支持布尔查询(and/or)、IN、全文搜索、模糊匹配、范围查询(大于/小于)。 其中text类型字段支持分词可以使用模糊查询。keyword类型只能做等值查询不能进行分词。 1、match类like匹配 1.1 match匹配单个字段 使用match实现全文搜索。类似于SQL中的like操作。 简单使用的语法 GET /{索引名}/_search {query: {match: {{FIELD}: {TEXT}}} } 说明 {FIELD} - 就是我们需要匹配的字段名 {TEXT} - 就是我们需要匹配的内容 例子 GET /article/_search {query: {match : {title : ES教程}} } article索引中title字段匹配“ES教程”的所有文档。 如果title字段的数据类型是text类型搜索关键词会进行分词处理。 等价SQL假设ES教程没有进行分词 select * from article where title like %ES教程% 1.2 multi_match多字段匹配 例子 GET /article/_search {query: {multi_match: {query: 斯柯达前轮制动器,fields:[doc_title,doc_content]}} } 等价SQL select * from article where doc_title like %斯柯达前轮制动器的分词% or doc_content like %斯柯达前轮制动器的分词% 因为 斯柯达前轮制动器的分词 会有很多所以实际上也会有很多的like而不仅仅是上面的两个like。 1.3 multi_phrase顺序匹配 match_phrase查询是ES中一种用于精确匹配短语的查询方式可以确保查询字符串中的关键词按照给定的顺序在文档中连续出现。 说明检索词还是进行分词的分词后的各个单词的顺序在 被检索的文中是一样的。 例子 GET /article/_search {query: {match_phrase: {doc_content: 制动器装配}} } 搜索结果 1.4 operator的布尔操作  指定分词匹配的布尔规则默认情况下operator为or即分词中有一个匹配即可。 当operator为and时需要文档匹配所有的分词。 例子 GET demo_idx/_search {query: {match: {content: {query: simple rest apis distributed nature,operator: and}}} } 1.5 结合operator、boost及match_phrase的查询 我们希望精确匹配在搜索结果中排名较高但也希望看到结果中相关性较低的文档此时使用should子句来组合OR、AND和match短语查询。布尔查询中的should子句采用更好匹配的方法因此每个子句的得分将为每个文档的最终_score做出贡献。 GET demo_idx/_search {query: {bool: {should: [{match: {content: {query: simple rest apis distributed nature}}},{match: {content: {query: simple rest apis distributed nature,operator: and}}},{match_phrase: {content: {query: simple rest apis distributed nature,boost: 2}}}]}} } 2、term精确匹配单个字段 使用term实现精确匹配。 如果想要类似SQL语句中的等值匹配不需要进行分词处理例如订单号、手机号、时间字段不需要分值处理只要精确匹配。 语法 GET /{索引名}/_search {query: {term: {{FIELD}: {VALUE}}} } {FIELD} - 就是我们需要匹配的字段名 {VALUE} - 就是我们需要匹配的内容除了TEXT类型字段以外的任意类型。 例子 GET /order_v2/_search {query: {term: {order_no: 202003131209120999}} } 搜索订单号order_no 202003131209120999的文档。 类似SQL语句 select * from order_v2 where order_no 202003131209120999 3、terms实现SQL的in语句 如果我们要实现SQL中的in语句一个字段包含给定数组中的任意一个值就匹配。 语法 GET /order_v2/_search {query: {terms: {{FIELD}: [{VALUE1},{VALUE2}]}} } 说明 {FIELD} - 就是我们需要匹配的字段名 {VALUE1}, {VALUE2} … {VALUE N} - 就是我们需要匹配的内容除了TEXT类型字段以外的任意类型。 例子 GET /order_v2/_search {query: {terms: {shop_id: [123,100,300]}} } 搜索order_v2索引中shop_id字段只要包含[123,100,300]其中一个值就算匹配。 类似SQL语句 select * from order_v2 where shop_id in (123,100,300) 4、range范围查询 通过range实现范围查询类似SQL语句中的, , , 表达式。 语法 GET /{索引名}/_search {query: {range: {{FIELD}: {gte: 10, lte: 20}}} } 参数说明 {FIELD} - 字段名 gte范围参数 - 等价于 lte范围参数 - 等价于 范围参数可以只写一个例如仅保留 “gte”: 10 则代表 FIELD字段 10 范围参数如下 gt - 大于 gte - 大于且等于 lt - 小于 lte - 小于且等于 例子 GET /order_v2/_search {query: {range: {shop_id: {gte: 10,lte: 200}}} } 查询order_v2索引中shop_id 10 且 shop_id 200的文档。类似SQL select * from order_v2 where shop_id 10 and shop_id 200 5、bool组合查询 前面的例子都是设置单个字段的查询条件如果想要编写类似SQL的Where语句组合多个字段的查询条件可以使用bool语句。 5.1 bool查询基本语法结构 语法 GET /{索引名}/_search {query: {bool: { // bool查询must: [], // must条件类似SQL中的and, 代表必须匹配条件must_not: [], // must_not条件跟must相反必须不匹配条件should: [] // should条件类似SQL中or, 代表匹配其中一个条件}} }must、must_not和should条件的参数都是一个数组意味着他们都支持设置多个条件。 同时前面介绍的单个字段的匹配语句都可以用在bool查询语句中进行组合。 5.2 must条件 类似SQL的and代表必须匹配的条件。 语法 GET /{索引名}/_search {query: {bool: {must: [{匹配条件1},{匹配条件2},...可以有N个匹配条件...]}} }例子 GET /order_v2/_search {query: {bool: {must: [{term: {order_no: 202003131209120999}},{term: {shop_id: 123}}]}} }这里的Must条件使用了term精确匹配等价SQL select * from order_v2 where order_no202003131209120999 and shop_id123 5.3 must_not条件 跟must的作用相反语法类似。 5.4 should条件 类似SQL中的 or 只要匹配其中一个条件即可。 语法 GET /{索引名}/_search{query: {bool: {should: [{匹配条件1},{匹配条件2},…可以有N个匹配条件…]}}} 例子 GET /order_v2/_search {query: {bool: {should: [{term: {order_no: 202003131209120999}},{term: {order_no: 22222222222222222}}]}} } 等价SQL select * from order_v2 where order_no202003131209120999 or order_no22222222222222222 5.5 bool综合例子 GET /order_v2/_search {query: {bool: {should: [{bool: {must: [{term: {order_no: 2020031312091209991}},{range: {shop_id: {gte: 10,lte: 200}}}]}},{terms: {tag: [1,2,3,4,5,12]}}]}} } 等价SQL select * from order_v2 where (order_no202003131209120999 and (shop_id10 and shop_id200)) or tag in (1,2,3,4,5)6、wildcard通配符查询 wildcard 关键字: 通配符查询 ? 用来匹配一个任意字符 * 用来匹配多个任意字符。 例子 GET /xizi/emp/_search{query: {wildcard: {name: {value: xi*}}}} 7、fuzzy模糊查询 fuzzy 模糊查询最大模糊错误必须在0-2之间   搜索关键词长度为 2 不允许存在模糊 0 搜索关键词长度为3-5 允许一次模糊 0 1   搜索关键词长度大于5 允许最大2模糊 例子 GET /xizi/emp/_search{query: {fuzzy: {name:xizi}}} 8、额外限制条件 8.1 _source指定返回字段 例子1 get lib3/user/_search {_source:[name,age],query:{match: {interests: changge}}结果只返回索引中name和age字段信息 例子2 get lib3/user/_search {query:{match_all: {}},_source:{includes: addr*,excludes: [name,bir*]} } 显示要的字段、去除不需要的字段、可以使用通配符*。 8.2 boost查询的权重 boost值控制每个查询子句的相对权重该值默认为1。 boost参数被用来增加一个子句的相对权重(当boost大于1时)或者减小相对权重(当boost介于0到1时)但是增加或者减小不是线性的。换言之boost设为2并不会让最终的_score加倍。 例子 GET/_search{query: {bool: {must: {match: {content: {query: full text search,operator: and}}},should: [{match: {content: {query: Elasticsearch,boost: 3}}},{match: {content: {query: Lucene,boost: 2}}}]}} } 8.3 min_similarity设置匹配的最小相似度 8.4 highlight高亮搜索结果 例子 get data_info/_search {_source:[doc_title,doc_content],query: {match: {doc_content: 斯柯达前轮制动器}},highlight:{fields:{doc_content:{}}} } 返回结果 8.5 size指定返回条数 ES默认返回10条结果。 例子 get data_info/_search {query: {match: {doc_content: 斯柯达前轮制动器}},size: 2 } 结果中只有2条信息。 8.6 from分页查询 from 关键字: 用来指定起始返回位置和size关键字连用可实现分页效果。 例子 get data_info/_search {query: {match: {doc_content: 斯柯达前轮制动器}},size: 2,from: 3 } 8.7 sort指定字段排序 使用该属性会让得分失效。 例子 GET /db_idx4/_search {query:{match_all:{}},sort:[{age:desc}] }8.8 explain查看分数计算详情 ES提供了一个解释性API和一个解释性查询参数以了解如何计算分数。 例子 GET /db_idx4/_search {explain: true,query: {match_phrase: {doc_content: 制动器装配}} } 结果示例 三、全文搜索 1、概念 平时我们使用SQL like语句搜索一些文本、字符串是否包含指定的关键词如果两篇文章都包含我们的关键词那么具体哪篇文章内容的相关度更高这个SQL的like语句是做不到的更别说like语句的性能问题了。 ES通过分词、相关度计算可以解决这个问题ES内置了一些相关度算法大致上意思是如果一个关键词在一篇文章出现的频率高并且在其他文章中出现少那说明这个关键词与这篇文章的相关度很高。 ES对于text类型的字段在插入数据的时候会进行分词处理然后根据分词的结果索引文档当我们搜索text类型字段的时候也会先对搜索关键词进行分词处理、然后根据分词的结果去搜索。 2、文档评分计算 2.1 默认评分影响因素 ES使用的默认评分算法是BM25决定文档得分的3个主要因素 字词频率TF搜索字词在我们正在搜索的文档中的字段中出现的次数越多则该文档越相关反向文档频率IDF在我们要搜索的字段中包含搜索词的文档越多该词的重要性就越低字段长度如果文档在非常短的字段即只有几个单词中包含搜索词则比文档在较长的字段即包含很多单词中包含搜索词更相关 2.2 使用function_score和script_score定制搜索结果分数 function_score和script_score是很耗资源的所以实际使用时只需要计算一组经过过滤的文档的分数。 script_score定制的例子 GET best_games/_search {_source: [name,critic_score,user_score],query: {script_score: {query: {match: {name: Final Fantasy}},script: {source: _score * (doc[user_score].value*10doc[critic_score].value)/2/100}}} } 具体细节参考Elasticsearch使用 function_score 及 script_score 定制搜索结果的分数-CSDN博客 3、分词效果测试 语法 GET /_analyze {text: 需要分词的内容,analyzer: 分词器 } 例子 GET http://xx.elasticsearch.aliyuncs.com:9200/_analyze {text:上海大学,analyzer: standard } 使用standard分词器对上海大学进行分词下面是输出结果 {tokens: [{token: 上,start_offset: 0,end_offset: 1,type: IDEOGRAPHIC,position: 0},{token: 海,start_offset: 1,end_offset: 2,type: IDEOGRAPHIC,position: 1},{token: 大,start_offset: 2,end_offset: 3,type: IDEOGRAPHIC,position: 2},{token: 学,start_offset: 3,end_offset: 4,type: IDEOGRAPHIC,position: 3}] } token就是分解出来的关键词。 四、难点剖析 1、filter与must的区别 同样是按条件匹配filter不统计相关度must统计相关度。就是filter不计算score分数值而must是计算的。所以must比filter计算更复杂、更耗时。 具体参考Elasticsearch Query filter与must的区别_elasticsearch must 和filter的区别-CSDN博客
http://www.hkea.cn/news/14311423/

相关文章:

  • 忻州企业网站建设wordpress如何删主题
  • 河南省大型项目建设办公室网站百度域名注册
  • 网站app免费制作免费网站建设基础步骤
  • 上海手机网站开发价格商品房合同备案查询入口
  • 和网站开发公司如何签合同手机端页面模板
  • idea建设完整的网站xampp怎么做网站
  • 推广型网站制作公司如何做网站粘贴广告
  • 牙膏的网站建设wordpress 阅读数插件
  • 微信端网站设计规范找程序员的网站
  • 创建公司网站难吗国外精品成品网站1688
  • 国外设计素材网站wordpress文章批量
  • 摄影网站模板源码wordpress可以自己做主题
  • 网站底部悬浮广告代码专业微信网站
  • 建筑给排水代做网站网站域名如何更换
  • 网站上传安装wordpress整站源码
  • 制作网页网站项目介绍品牌产品网站怎么做
  • 做问卷调查的是哪个网站iis wordpress ftp
  • 汽车配件生产企业网站模板网站设计为什么学不好
  • 套版网站怎么做常德seo技术
  • 静态网站制作流程公司年审需要多少钱
  • 制作网站方法网站项目建设主要内容
  • wordpress 觉唯主题网站seo相关设置优化
  • 用js做的个人酷炫网站蜗牛星际做网站
  • 厦门网站制作报价河北沧州最新消息
  • 上传网站空间网站服务器备案查询
  • vs2010网站开发 视频降低生育
  • php 网站开发文档怎么写wordpress微信服务号登录
  • 简单html网页设计代码范文青岛网站关键词优化公司
  • 招聘网站建设费用多少钱WordPress 3.5火车头发布接口
  • 婚庆网页设计信息流优化师证书