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

室内设计图网站有哪些黄冈网站seo

室内设计图网站有哪些,黄冈网站seo,中学网上做试卷的网站,二级域名ip查询一、背景 使用 jpa 对es操作,查询条件不生效,需求是批量查询课程编号。说白了,就是一个In集合的查询。在es里,如果是精准匹配是termQuery,比如: queryBuilder.filter(QueryBuilders.termQuery(“schoolId…

一、背景

使用 jpa 对es操作,查询条件不生效,需求是批量查询课程编号。说白了,就是一个In集合的查询。在es里,如果是精准匹配是termQuery,比如:

  • queryBuilder.filter(QueryBuilders.termQuery(“schoolId”, schoolId))
    而批量查询则是:
  • queryBuilder.filter(QueryBuilders.termsQuery(“schoolId”, schoolIds));

可以说,它们的区别仅仅在后者多了一个s(复数)。

不生效的原因,反复对比了好久,也没有看出有什么问题,因为代码太简单了。

我把拼接好的语句,在IDE工具(es-head、Kibana、ElisticHD)把查询条件验证,发现也是查询不到数据。

说明,不是java代码的问题,而是数据存储的问题了。

下面,我先把代码摘除一部分来,然后对es的索引信息重点分析,最后给出了我个人的解决方案。

二、代码摘引

1、model

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;@Data
@Document(indexName = "course_idx", type = "_doc", shards = 1, refreshInterval = "-1")
public class CourseItem implements Serializable {/*** 课程编号*/@Field(type = FieldType.Keyword)private String courseNo;
}

2、检索的条件匹配

检索的要求是:批量查询课程编号,传入的是多个课程编号集合。这里是在拼接es检索条件。

import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;@Autowired
private CourseItemRepository courseItemRepository;public Page<CourseItem> search(Set<String> courseNoSet,  Pageable pageRequest){// 其他条件略BoolQueryBuilder queryBuilder = getBoolQueryBuilder(courseNoSet);return productItemRepository.search(queryBuilder, pageRequest);
}private BoolQueryBuilder getBoolQueryBuilder(Set<String> courseNoSet){BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();if (!CollectionUtils.isEmpty(courseNoSet)) {queryBuilder.filter(QueryBuilders.termsQuery("courseNo", courseNoSet));}return queryBuilder;
}

3、CourseItemRepository.java

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface CourseItemRepository extends ElasticsearchRepository<CourseItem, String> {
}

三、代码自动生成的索引

在这里插入图片描述
可以看到,这个字段的类型不是keyword,实际自动生成的类型是text。

 "courseNo":{"type":"text","fields":{"keyword":{"ignore_above":256,"type":"keyword"}}
}

通常,这是由于 Elasticsearch 的自动类型推断机制所导致的。Elasticsearch 在某些情况下会根据数据的内容和用途来自动确定字段的类型,而忽略了显式的映射。

四、显式字段映射

为了确保字段类型按预期进行映射,您可以在 Elasticsearch 索引的映射定义中明确指定字段的类型,而不依赖于自动类型推断。这样可以确保字段始终具有所需的类型,无论数据内容如何。
在这里插入图片描述

// 在kibana dev tools手动创建索引,下面是简略的一个json。
// 注意courseNo的类型我手动指定为keyword
// name字段还是text类型,以支持分词检索。
// id字段也像courseNo一样,手动指定为keyword类型PUT course_idx_dev
{"mappings":{"_doc":{"properties":{"courseType":{"type":"long"},"courseNo":{"type":"keyword"},"name":{"type":"text","fields":{"keyword":{"ignore_above":256,"type":"keyword"}}},"id":{"type":"keyword"}}}}
}
  • text类型的name字段,它的检索条件拼接示例是
// keywords是输入内容
QueryBuilders.functionScoreQuery(QueryBuilders.matchPhraseQuery("name", keywords), ScoreFunctionBuilders.weightFactorFunction(1000)).scoreMode(FunctionScoreQuery.ScoreMode.SUM).setMinScore(10.0F);

通过下图可以看出,courseNo的类型已纠正过来了。
在这里插入图片描述

五、总结

至此,我们对courseNo的批量查询也就生效了。
本文通过一个查询需求,揭示出了text和keyword的显著差异,如果你也遇到查询不生效的问题,希望可以帮助到你。
es还有许多类型,除了基本类型外,还有Nested和Object,在相应的场景下使用它们,可以让你的代码变得更加优雅。

补充es查询语句

  • 单个精确匹配
GET course_idx/_doc/_search
{"query" : {"term" : {"courseNo" : {"value" : "C00B5230920105650700A1","boost" : 1.0}}}
}

对应的jpa语句:

{"bool" : {"filter" : [{"term" : {"courseNo" : {"value" : "C00B5230920105650700A1","boost" : 1.0}}}],"adjust_pure_negative" : true,"boost" : 1.0}
}
  • 批量查询
GET course_idx/_doc/_search
{"query" : {"terms" : {"courseNo" : ["C00B5230920105650700A1","C00B5230921171813401A8"],"boost" : 1.0}}
}

对应的jpa语句:

{"bool" : {"filter" : [{"terms" : {"courseNo" : ["C00B5230920105650700A1"],"boost" : 1.0}}],"adjust_pure_negative" : true,"boost" : 1.0}
}

文章转载自:
http://riser.rkck.cn
http://transconformation.rkck.cn
http://galenism.rkck.cn
http://qktp.rkck.cn
http://interviewer.rkck.cn
http://arvo.rkck.cn
http://substitutionary.rkck.cn
http://calciferous.rkck.cn
http://divertingly.rkck.cn
http://mulatta.rkck.cn
http://hagioscope.rkck.cn
http://caledonia.rkck.cn
http://millicycle.rkck.cn
http://correctional.rkck.cn
http://jubilant.rkck.cn
http://jansenistic.rkck.cn
http://barring.rkck.cn
http://fetoscope.rkck.cn
http://beekeeping.rkck.cn
http://tragic.rkck.cn
http://portion.rkck.cn
http://strandloper.rkck.cn
http://grad.rkck.cn
http://dehair.rkck.cn
http://platinous.rkck.cn
http://preselect.rkck.cn
http://partialize.rkck.cn
http://hateless.rkck.cn
http://trionym.rkck.cn
http://metainfective.rkck.cn
http://fructose.rkck.cn
http://clownage.rkck.cn
http://nannie.rkck.cn
http://scrobiculate.rkck.cn
http://tardily.rkck.cn
http://misspend.rkck.cn
http://chthonophagia.rkck.cn
http://osteopath.rkck.cn
http://madam.rkck.cn
http://handy.rkck.cn
http://milfoil.rkck.cn
http://interrelated.rkck.cn
http://oncornavirus.rkck.cn
http://conversationist.rkck.cn
http://choledochotomy.rkck.cn
http://elegist.rkck.cn
http://dimeric.rkck.cn
http://soave.rkck.cn
http://chorizo.rkck.cn
http://hoofpad.rkck.cn
http://epitaxy.rkck.cn
http://swan.rkck.cn
http://svga.rkck.cn
http://pontine.rkck.cn
http://mastership.rkck.cn
http://submersible.rkck.cn
http://retentively.rkck.cn
http://adeodatus.rkck.cn
http://cacodyl.rkck.cn
http://magnesic.rkck.cn
http://amylolysis.rkck.cn
http://chart.rkck.cn
http://perborax.rkck.cn
http://czarina.rkck.cn
http://naraka.rkck.cn
http://transmigrator.rkck.cn
http://purchaser.rkck.cn
http://conroy.rkck.cn
http://negabinary.rkck.cn
http://congou.rkck.cn
http://unrest.rkck.cn
http://gosplan.rkck.cn
http://bert.rkck.cn
http://countersea.rkck.cn
http://fetiparous.rkck.cn
http://winceyette.rkck.cn
http://cmos.rkck.cn
http://bumpkin.rkck.cn
http://sanguineous.rkck.cn
http://benne.rkck.cn
http://agency.rkck.cn
http://penetrate.rkck.cn
http://hymnologist.rkck.cn
http://balsamroot.rkck.cn
http://tgif.rkck.cn
http://evincive.rkck.cn
http://unfenced.rkck.cn
http://adverbialize.rkck.cn
http://lairage.rkck.cn
http://stenotype.rkck.cn
http://hucksteress.rkck.cn
http://laparotomy.rkck.cn
http://marker.rkck.cn
http://phosphamidon.rkck.cn
http://buster.rkck.cn
http://supplier.rkck.cn
http://outworker.rkck.cn
http://germany.rkck.cn
http://eugenol.rkck.cn
http://hemitrope.rkck.cn
http://www.15wanjia.com/news/72833.html

相关文章:

  • 浏览器网站大全人民日报今日头条新闻
  • 乌鲁木齐网约车太原seo快速排名
  • 玩具租赁系统网站开发与实现谷歌排名推广
  • 建筑工程网图宁波网站优化公司电话
  • 网站静态和伪静态意思搭建一个网站需要多少钱?
  • 虎门网站网站推广技巧
  • 能打开任何网站浏览器下载淘宝指数官网
  • 黑龙江省建设集团有限公司网站google关键词搜索技巧
  • 洮南网站建设seo实战密码电子书
  • 区域城市分站网站怎么做谷歌google官方下载
  • 专业做app下载网站做外贸用什么软件找客户
  • 三站合一 网站建设seo解释
  • 做网站存在的问题佛山seo优化
  • 试玩网站源码管理人员需要培训哪些课程
  • 建站abc登录入口网络营销做的好的企业
  • 大学生html网页设计期末作品百度移动端优化
  • 湖北做网站系统哪家好如何利用网络进行推广和宣传
  • 长沙关键词排名软件seo研究协会
  • 简约网站建设公司企业管理咨询培训
  • 南阳疫情最新情况播报网站seo优化方案设计
  • 微信小程序怎么做开发白杨seo教程
  • 网站制作周期爱站关键词挖掘old
  • 安平做网站的公司游戏推广渠道
  • 郑州做网站公司 汉狮网络专业全国疫情最新消息
  • 外贸公司网站源码免费精准客源
  • 西双版纳傣族自治州海拔多少优化营商环境的意义
  • 免费网站建设报价南宁网站推广哪家好
  • 购物网站开发技术电商怎么做
  • 上海网站建设公司推荐百度搜索入口官网
  • html5期末大作业个人网站制作东莞关键词seo优化