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

做网站对商家的好处百度关键词搜索热度查询

做网站对商家的好处,百度关键词搜索热度查询,快彩网站开发,简约智能设备制造公司网站一、区别#xff1a; 0、一般情况下用object 类型来查es中为json对象的字段数据#xff0c;用nested来查es中为JsonArray数组类型的字段数据。 1、默认情况下ES会把JSON对象直接映射为object类型#xff0c;只有手动设置才会映射为nested类型 2、object类型可以直接使用普…一、区别 0、一般情况下用object 类型来查es中为json对象的字段数据用nested来查es中为JsonArray数组类型的字段数据。 1、默认情况下ES会把JSON对象直接映射为object类型只有手动设置才会映射为nested类型 2、object类型可以直接使用普通的逗号.查询比如 {query: {term: {inspector.id: {value: 222}}} }3、nested类型的查询需要使用nested查询 {query: {nested: {path: inspector,query: {term: {inspector.id: {value: 222}}}} } }4、两种查询方式不兼容如果大家想做改动的话需要对java程序进行修改风险比较大。 5、存储方式不同。对象数组在后台是扁平化存储嵌套对象数组是每个对象独立成文档存储。因此对象数据有时会有且条件查询出或结果嵌套对象的文档聚合可能会多计数(除非加reverse_nested)想保持数组中对象的独立性就需要使用嵌套字段类型。 二、Object类型字段 1mapping 注意如果没有写明type比如categoryObjES会默认object类型并且就算查看mapping也不会显示出来 // 所属类目对象类型注意这里没有写明typeES则会默认为objectcategoryObj: {//type:object,properties: {class1: {type: keyword},class2: {type: keyword},class3: {type: keyword}}}2:增加数据 PUT test_index_20211220/e-com/1 {id: 1,name: Loreal/欧莱雅复颜玻尿酸水光充盈导入膨润精华液,brand: 欧莱雅,price: 279,desc: 补水 提拉紧致 淡化细纹,categoryObj: {class1: 欧莱雅,class2: 补水,class3: 面部护理} } 3查询 在样例数据中“categoryObj字段被默认设置为object类型(没有显示设置type)对于对象类型在查询时需要用”.号连接整个字段 GET test_index_20211220/_search {query: {term: {categoryObj.class1: 欧莱雅}} } 4对象数组特性 我们知道了嵌套字段中的对象被ES存储为了独立的文档那对象字段呢ES在后台将对象字段进行打平处理后台其实存储的是扁平结构以categoryObj字段为例 categoryObj: [{class1: 欧莱雅,class2: 补水,class3: 面部护理},{class1: 欧莱雅,class2: 补水,class3: 面部精华},{class1: 雅诗兰黛,class2: 美白,class3: 面霜} ] 后台存储的其实是 {categoryObj.class1: [欧莱雅,欧莱雅,雅诗兰黛],categoryObj.class2: [补水,补水,美白],categoryObj.class3: [面部护理,面部精华,面霜] } 这就牺牲了对象之间的独立性有时候会带来一些影响具体就是某些情况下对对象数组的且查询可能会变成或查询。 这个时候我们去同时查询欧莱雅和美白这两个关键词正常来说是不应该差出来任何文档的因为categoryObj中没有任何一个对象同时具备欧莱雅和美白这两个关键词可事实确不是这样 GET test_index_20211220/_search {query: {bool: {// filter上下文filter: {bool: {must: [{term: {categoryObj.class1: 欧莱雅}},{term: {categoryObj.class2: 美白}}]}}}} } 结果居然将文档查询出来了 所以当字段为数组的时候建议使用nested类型字段。 三、Nested类型字段 1mapping // 所属类目嵌套类型categoryNst: {type: nested,properties: {class1: {type: keyword},class2: {type: keyword},class3: {type: keyword}}}2增加数据 PUT test_index_20211220/e-com/1 {id: 1,name: Loreal/欧莱雅复颜玻尿酸水光充盈导入膨润精华液,brand: 欧莱雅,price: 279,desc: 补水 提拉紧致 淡化细纹,categoryNst: {class1: 欧莱雅,class2: 补水,class3: 面部护理} } 3查询 GET test_index_20211220/_search {query: {nested: {path: categoryNst, #nested对象的查询深度query: {term: {// 在以前的版本中直接写 class2: 补水也是可以的因为已经在外部声明了path// 不知道从哪个版本改了现在必须写 categoryNst.class2: 补水否则报错categoryNst.class2: 补水}}}} } 4 嵌套字段的特性 嵌套字段其实是把其内部成员当做了一条独立文档进行了索引。如何理解这句话呢在上面的数据中categoryNst数组已经有两个对象成员了 ES在后台其实将这两个对象成员当成了两条独立文档进行索引所以ES一共索引了3条文档(一条外部文档两条嵌套字段对象的文档)这点可以从对嵌套字段的terms聚合中看出来 GET test_index_20211220/_search {query: {nested: {path: categoryNst,query: {term: {categoryNst.class2: 补水}}}},aggs: {nestedAgg:{nested: {path: categoryNst},aggs: {termAgg: {terms: {// 这里一样不能写成class2否则虽不报错但聚合无结果。field: categoryNst.class2}}}}} } {took: 6,timed_out: false,_shards: {total: 2,successful: 2,skipped: 0,failed: 0},hits: {total: 1,max_score: 0.18232156,hits: []},aggregations: {nestedAgg: {doc_count: 2,termAgg: {doc_count_error_upper_bound: 0,sum_other_doc_count: 0,buckets: [{key: 补水,doc_count: 2}]}}} } 明明只有一条整体的文档但聚合结果却是2岂不是结果错误了如何才能得到我们需要的结果呢这个时候就要用到反转嵌套(reverse_nested)改写上面查询语句的聚合部分 GET test_index_20211220/_search {size:0,query: {nested: {path: categoryNst,query: {term: {categoryNst.class2: 补水}}}},aggs: {nestedAgg:{nested: {path: categoryNst},aggs: {termAgg: {terms: {field: categoryNst.class2},aggs: {reverseAgg: {reverse_nested: {}}}}}}} } 5java查询 public static void main(String[] args) {//创建ES客户端RestHighLevelClient esClient new RestHighLevelClient(RestClient.builder(new HttpHost(localhost, 9200, http)));//创建搜索对象SearchRequest searchRequest new SearchRequest();searchRequest.indices(user);//构建请求体SearchSourceBuilder searchSourceBuilder new SearchSourceBuilder();//查询数据-对nested类型数据查询searchSourceBuilder.query(QueryBuilders.nestedQuery(check_error, QueryBuilders.termsQuery(check_error.errtype, errtype), ScoreMode.None));//发送请求searchRequest.source(searchSourceBuilder);SearchResponse search null;try {search esClient.search(searchRequest, RequestOptions.DEFAULT);} catch (IOException e) {throw new RuntimeException(e);}//解析结果SearchHits hits search.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}//关闭ES客户端esClient.close();}四、数组类型字段 1mapping ES中没有专门的数组类型默认情况下任何字段都可以包含一个或者多个值但一个数组中的值必须是同一种类型。 // 数组类型comments: {type: keyword}2增加数据 当数组类型字段(comments)中只有一个数据时 GET test_index_20211220/e-com/1 {_index: test_index_20211220,_type: e-com,_id: 1,_version: 1,found: true,_source: {id: 1,name: Loreal/欧莱雅复颜玻尿酸水光充盈导入膨润精华液,brand: 欧莱雅,price: 279,desc: 补水 提拉紧致 淡化细纹,comments: 还没有用赠品跟欧莱雅旗舰店的同款赠品有差异。味道也不一样} } 可以看到此时的comments还不是数组现在我们增加一条评论覆盖写入一次 PUT test_index_20211220/e-com/1 {id: 1,name: Loreal/欧莱雅复颜玻尿酸水光充盈导入膨润精华液,brand: 欧莱雅,price: 279,desc: 补水 提拉紧致 淡化细纹,comments: [还没有用赠品跟欧莱雅旗舰店的同款赠品有差异。味道也不一样,只有这支玻璃尿酸水光充盈是真的] } 重新查询可以看到commts在索引的时候如果有多个值则会自动转化成了数组且文档版本号1 GET test_index_20211220/e-com/1 {_index: test_index_20211220,_type: e-com,_id: 1,_version: 2,found: true,_source: {id: 1,name: Loreal/欧莱雅复颜玻尿酸水光充盈导入膨润精华液,brand: 欧莱雅,price: 279,desc: 补水 提拉紧致 淡化细纹,comments: [还没有用赠品跟欧莱雅旗舰店的同款赠品有差异。味道也不一样,只有这支玻璃尿酸水光充盈是真的]} } 3查询 此时数组类型就当做正常的字段进行查询即可 GET my_test_index/_search {query: {bool: {must: [{terms: {label: [10,100]}},{term: {name: {value: 旺仔33333}}}]}} }
http://www.yingshimen.cn/news/1631/

相关文章:

  • 泸州市建设职工培训中心网站北京商场排名前十
  • 营销型网站的建设起步漳州微网站建设
  • 做球形全景的网站做空的网站有哪些
  • 网站建设需求emlog 迁移Wordpress
  • 东莞排名推广没有网站做优化
  • 网站备案核验点 上海国际重大新闻
  • 山东mip网站建设买卖网站
  • 大型网站建设济南兴田德润o团队怎么样php源码网站安装
  • 成都市建设学校网站网站建设中的html页面下载
  • 好的h5网站苏州网站建设风兰
  • dsicuz做的网站青岛网站推广怎么做好
  • 营口市城乡住房建设局网站asp 免费网站模板
  • 网站关键词优化seo企业管理软件代理
  • 最优秀的无锡网站建设惠州公共资源交易中心
  • 遵义网站制作的网站网站站点地图
  • 松原建设网站jsp做网站组件
  • 公司网站制作要多少钱中信建设有限责任公司 乔峰手机
  • 深圳网页网站设计618网络营销策划方案
  • 北京有哪些网站制作公司wordpress旅行地图主题
  • 欧美男女直接做的视频网站沧浪seo网站优化软件
  • 成都网站设计开发公司糖粉怎么自己制作
  • 网站建设sutenguc自媒体平台注册
  • 网站域名解析页面网站收录很少却有排名
  • 有哪些公司建设网站网站服务器管理系统
  • 临安建设规划局网站网站图片不是本站的对seo有什么不好
  • 公共体育课程网站建设学校网站建设框架
  • WordPress去掉你的位置什么是seo
  • 沈阳中天建设集团网站同城购物网站建设
  • 怎么创建免费网站吗做网站知乎
  • php网站开发文档做ppt的图片素材网站