1.为什么要使用ES?

虽然lucene是性能最先进的、功能完善的搜索引擎,但是它只能有一个库,而且使用它需要集成到java项目才能使用,配置还特别复杂,而ES语法简单、是基于Resultful api风格的,它在lucene所有功能基础上还能集成多台服务器进行搜索,也就是集群;


2.ES和lucene的区别是什么?

lucene是现存功能最强大、最先进搜索库,直接基于lucene开发,api非常复杂大量的java代码、需要深入了解原理


对比处:


只有一个索引库、

传统的遍历搜索方式

采用B+树索引;

Es是基于lucene的,隐藏了lucene复杂部分的一个分布式全文检索框架


对比处:


一个es的集群包含多个索引库、

分布式搜索

Es是采用倒排式索引

es没有事物概念,删除不能恢复

es开源免费

正排索引:id ---> value


倒排索引:value ---> id


3.你还了解哪些全文检索工具?

Lucene,Solr,HadoopContrib,Katta


4.Bulk一次最大处理多少数据量?

bulk会把将要处理的数据载入内存中,所以数据量是有限制的


最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。


一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件中修改这个值http.max_content_length: 100mb


5.ES在高并发的情况下如何保证数据线程安全问题?

在读数据与写数据之间如果有其他线程进行写操作,就会出问题,es使用版本控制才避免这种问题


在修改数据的时候指定版本号,操作一次版本号加1


6.ES管理的工具有哪些?

1)BigDesk Plugin (作者 Lukáš Vlček):监控es状态的插件,推荐!主要提供的是节点的实时状态监控,包括jvm的情况,linux的情况,elasticsearch的情况


2)Elasticsearch Head Plugin (作者 Ben Birch):很方便对es进行各种操作的客户端。 


3)Kibana(ES官方推荐):Es基于 RestAPI调试、数据报表、数据搜索


7.ES自动映射的规则?

Es映射是用于确定字段类型,将新增的每个字段数据类型映射后确定的字段类型,常见的映射类型有基本数据类型、复杂数据类型映射有数组对象(但对象映射扁平化后相关性会丢失,不能确定哪个是哪个属性)、


全局映射的方式默认映射继承_default_的配置、动态模板映射:dynamic_templates,使用动态模板映射会覆盖默认模板,可设置关键字分词,默认模板是string类型的




原文:https://blog.csdn.net/Yangyg_0818/article/details/83963649