随笔分类 - JAVA
JAVA
摘要:Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean。工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象。 ### Spring初始化bean有两种方式: - 实现Initi
阅读全文
摘要:如何阻止 Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了 使用 CountDownLatch CountDownLatch、CyclicBarrier 使用区别 多线程 ThreadPoolTaskExecutor 应用 Java BasePooledObjectF
阅读全文
摘要:CountDownLatch:所有子线程完成后,再执行主线程、 CyclicBarrier: 所有子线程就绪后,再执行子线程
阅读全文
摘要:Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类 一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象。池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁它。这是一种特殊的工厂对象。
阅读全文
摘要:POM <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.2</version> </dependency> Se
阅读全文
摘要:net use X: \\172.16.0.88\Tools /persistent:yes /user:share share
Windows Service 服务,无法访问共享盘,无法访问挂载盘,无法访问(网络映射盘)
阅读全文
摘要:注册对象 POM.xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.6</version> </dependency> ElasticSearchConfig.
阅读全文
摘要:搜素关键字自动补全(suggest),分词全文搜索 系统初始化,ElasticSearch ES 创建索引(EsIndexTest.createIndexTest)
模拟后台管理员,在添加文章时,将要检查的字段内容,同步到ES中(EsIndexTest.addArticleTest)
模拟用户搜索,在搜索框中查关键词“人工”(EsIndexTest.earchTest)
阅读全文
摘要:ES使用Completion Suggest 做关键字自动补全时,实际应用中搜索性能更加高效,建议多开一个子字段,如下示例,假设要根据title字段做关键字自动补全,不要改原字段的类型,多开一个子字段title.suggest,类型设置为completion,然后之后的suggest针对title.suggest字段做操作
阅读全文
摘要:目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装 ElasticSearch 实现分词全文检索 - Restful基本操作 ElasticSearch 实现分词全文检索 - Java SpringBoot E
阅读全文
摘要:目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装 ElasticSearch 实现分词全文检索 - Restful基本操作 ElasticSearch 实现分词全文检索 - Java SpringBoot E
阅读全文
摘要:目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装 ElasticSearch 实现分词全文检索 - Restful基本操作 ElasticSearch 实现分词全文检索 - Java SpringBoot E
阅读全文
摘要:query,根据查询条件,去计算文档的匹配度得到一个分数,并且根据分数进行排序,不会做缓存。【精准匹配度高】
filter,根据查询条件去查询文档,不去计算分数,而且filter会对经常被过滤的数据进行缓存。【查询效率会高】
阅读全文
摘要:boosting 查询可以帮助我们去影响查询后的 score
- positive:只有匹配上positive的查询的内容,才会被放到返回的结果中
- negative:如果匹配上和positive并且也匹配上了negative,就可以降低这样的文档 score.
- negative_boost:指定系数,必须小于 1.0
关于查询时,分数是如何计算的:
- 搜索的关键字在文档中出现的频次越高,分数就越高
- 指定的文档内容越短,分数就越高
- 我们在搜索时,指定的关键字也会被分词,这个被分词的内容,被分词库匹配的个数越多,分数越高
阅读全文
摘要:delete-by-query
根据 term、match 等查询方式去删除大量的文档
> 如果需要删除的内容,是index下的大部分数据,不建议使用,因为去匹配文档时还是一个一个的拿到文档ID,去删除
推荐创建一个全新的index,将保留的文档内容,添加到全新的索引中
阅读全文
摘要:ES 对 from + size 有限制,两者之和不能超过1W
Scroll查询方式,不适合做实时的查询,每次都是从数据文档中的ID去获取,效果高了,但文档中的ID(第二步)不是实时更新的,一般后台管理的方式用 Scroll 比较方便
阅读全文
摘要:fuzzy查询:模糊查询,我们输入字符的大概,ES就可以
wildcard 查询:通配查询,和MySQL中的 like 差不多,可以在查询时,在字符串中指定通配符 * 和占位符?
range 查询:范围查询,只针对数值类型,对某一个Field进行大于或小于的范围指定查询
regexp 查询: 正则查询,通过你编写的正则表达式去匹配内容
阅读全文
摘要:match查询属于高层查询,他会根据你查询的字段类型不一样,采用不同的查询方式。
- 查询的是日期或者是数值的话,他会将你基于的字符串查询内容转换为日期或者数值对待。
- 如果查询的内容是一个不能被分词的内容 (keyword) ,match查询不会对你指定的查询关键字进行分词。
- 如果查询的内容时一个可以被分词的内容 (text),match会将你指定的查询内容根据一定的方式去分词,去分词库中匹配指定的内容。
match查询,实际底层就是多个term查询,将多个term查询的结果给你封装到了一起
阅读全文
摘要:term 查询 term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,对你的关键字去文档分词库中的去匹配内容
terms和term的查询机制是一样,都不会将指定的查询关键字进行分词,直接去分词库中匹配,找到相应文档内容。
terms是在针对一个字段包含多个值的时候使用。
term: where province = 江苏
terms: where province = 江苏 or province = ? or province = ?
阅读全文
摘要:String json = JSON.toJSONStringWithDateFormat(sms, "yyyy-MM-dd HH:mm:ss"); FastJson 将日期格式化
BulkRequest bulkRequest = new BulkRequest();
Integer idx = 1;
for (String json : jsonList) {
IndexRequest request = new IndexRequest(indexName)
.id(idx.toString()) //手动指定ID
.source(json, XContentType.JSON);
bulkRequest.add(request);
idx++;
}
阅读全文