全文搜索之MySQL与ElasticSearch搜索引擎
1、通常来说MySQL自带的全文搜索使用起来局限性比较大,性能和功能都不太成熟,主要适用于小项目,大项目还是建议使用elasticsearch来做全文搜索。
2、前几天学习了我ElasticSearch和SpringBoot整合的相关应用,这个项目我也是参考慕课网上视频学习的,大家如果有兴趣的话,也可以去看一下。链接我放这了。
3、这两个所适用的领域不同,不具有可比性。ElasticSearch本质是搜索引擎,它通过建立反向索引的方式处理文档型数据,不具备通常数据库的事务、关联查询等等特性,你可以把它当作nosql来用。MySQL是典型的关系型数据库。
4、Elasticsearch和MySQL可以结合使用,主要是因为它们两个的定位和功能不同。MySQL是一种关系型数据库,用于存储和管理结构化数据,而Elasticsearch则是一种搜索引擎和分析引擎,用于实时分析和搜索大量非结构化数据。
5、合并结束后老的段会被删除,新的段被 flush 到磁盘,同时写入一个包含新段且排除旧的和较小的段的新提交点,新的段被打开可以用来搜索。
6、ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。
Elasticsearch数据增删改
1、document的全量替换型修改:该方式是直接替换类型是 product id=1的文档。该方式必须带上所有的field,才能去进行信息的修改。
2、会调用ElasticSearch底层功能进行操作,能够实现ElasticSearch增删改操作。
3、Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段。但现实往往并非如此啊,有时增加一个字段,就好像打了一个补丁,一个可以,但是越补越多,最后自己都觉得惨不忍睹了。
5.ElasticSearch数据写入与删除
1、单条写入性能差,批量效率更高,可以使用bulk关键字,进行批量写入。批量写入无事务保证,可能会局部成功,局部失败。重试机制由客户端保障。注意书写格式。
2、查询式删除:通过条件查询删除某些符合条件的数据;我们测试把张三和王五删除掉。
3、在删除文档时,ElasticSearch引擎把已删除的文档的信息存储在一个单独的文件中,在搜索数据时,ElasticSearch引擎首先从段中执行查询,再从查询结果中过滤被删除的文档 。
4、es性能问题: 出现线程池拒绝 调整elasticsearch.yml配置processors参数,调整值得大小,可以设置为cpu核数的一半。