elasticsearch是什么 有什么好书 吗

温馨提示:
ElasticSearch入门-搜索如此简单
发布: 网络|
浏览: 3731
搜索引擎我也不是很熟悉,但是数据库还是比较了解。可以把搜索理解为数据库的like功能的替代品。因为like有以下几点不足:第一、like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹配,才能用得上索引。但普通的需求并非前缀匹配。第二、like的不能做到完全的模糊匹配。比如like '%化痰冲剂%'就不能把”化痰止咳冲剂“搜索出来。但是普通的用户,需求就是这样第三、like无法根据匹配度进行排序。数据库匹配某个关键字的记录可能有好几千,但是用户只能看100条,数据库往往返回用户一些不关心的记录。种种原因导致搜索引擎的横空出世。为了说明ES的搜索AIP及搜索功能,我们需要先造点数据。Java代码import org.elasticsearch.action.bulk.BulkRequestB &import org.elasticsearch.action.bulk.BulkR &import org.elasticsearch.action.index.IndexRequestB &import org.elasticsearch.client.C & &import com.donlianli.es.ESU &import com.donlianli.es.model.LogM & &public class BulkIndexTest { & & & & & &public static void main(String[] args) { & & & & &String[] desc = new String[]{ & & & & & & & & &&玉屏风口服液&, & & & & & & & & &&清咽丸&, & & & & & & & & &&四消丸&, & & & & & & & & &&感冒清胶囊&, & & & & & & & & &&人参归脾丸&, & & & & & & & & & & & & & & & & & &&人参健脾丸&, & & & & & & & & &&明目地黄丸&, & & & & & & & & &&小儿咳喘灵颗粒&, & & & & & & & & &&小儿化痰止咳冲剂&, & & & & & & & & &&双黄连&, & & & & & & & & &&六味地黄丸& & & & & &}; & & & & &Client client = ESUtils.getClient(); & & & & &int j= 0; & & & & &BulkRequestBuilder bulkRequest = client.prepareBulk(); & & & & &for(int i=1000;i&1010;i++){ & & & & & & &LogModel l = new LogModel(); & & & & & & &l.setDesc(desc[j]); & & & & & & &j++; & & & & & & &String json = ESUtils.toJson(l); & & & & & & &IndexRequestBuilder indexRequest = client.prepareIndex(&twitter&, &tweet&) & & & & & & & & & & & & & &.setSource(json).setId(String.valueOf(i)); & & & & & & & & & & & & & &bulkRequest.add(indexRequest); & & & & &} & & & & & & & & & &BulkResponse bulkResponse = bulkRequest.execute().actionGet(); & & & & &if (bulkResponse.hasFailures()) { & & & & & & & & & & & & & &System.out.println(bulkResponse.buildFailureMessage()); & & & & &} & & &} &} &
LogModel的定义见我们插入了10条记录到ES,别管ID是多少,只要不重就行。下面,我们需要对LogModel的desc字段进行搜索。我们搜索一个最简单的”丸“字,我们希望将所有带丸字的记录都筛选出来。Java代码import org.elasticsearch.action.search.SearchR &import org.elasticsearch.client.C &import org.elasticsearch.index.query.QueryB &import org.elasticsearch.index.query.QueryB &import org.elasticsearch.search.SearchH &import org.elasticsearch.search.SearchH & &import com.donlianli.es.ESU & &public class QuerySearchTest { & & &public static void main(String[] args) { & & & & &Client client = ESUtils.getClient(); & & & & &QueryBuilder query = QueryBuilders.fieldQuery(&desc&, &丸&); & & & & &SearchResponse response = client.prepareSearch(&twitter&) & & & & & & & & &.setTypes(&tweet&) & & & & & & & & & & & & & & & & & &.setQuery(query) & & & & & & & & &.setFrom(0).setSize(60) & & & & & & & & &.execute() & & & & & & & & &.actionGet(); & & & & &
& & & & &SearchHits shs = response.getHits(); & & & & &for(SearchHit hit : shs){ & & & & & & &System.out.println(&分数(score):&+hit.getScore()+&, 业务描述(desc):&+ & & & & & & & & & & &hit.getSource().get(&desc&)); & & & & &} & & & & &client.close(); & & &} & &} & 运行结果:分数(score):2.97438, 业务描述(desc):四消丸
分数(score):2.7716475, 业务描述(desc):清咽丸
分数(score):2.6025825, 业务描述(desc):人参归脾丸
分数(score):2.6025825, 业务描述(desc):人参健脾丸
分数(score):2.4251914, 业务描述(desc):明目地黄丸 可以看到,搜索引擎已经将我们所有带丸的记录都筛选出来了。并且,字数最少的自动排在了最前面。是不是很智能。在完全没有配置ES任何东西之前,就能使用搜索功能了。
下面,我们再来试试搜索”小儿颗粒“,你猜会不会搜到记录呢?运行结果:分数(score):4.46157, 业务描述(desc):小儿咳喘灵颗粒
分数(score):0., 业务描述(desc):小儿化痰止咳冲剂 嗯,不错,虽然没有完全匹配的,但相关记录都已经出来了。至此,使用ES替代数据库的LIKE功能,基本上已经完成了。搜索的更多功能,探索ing。。。。 PS: ESUtils.getClient();就是一个静态方法,创建了一个ES的客户端。Java代码public static Client getClient(){ & & & & &Settings settings = ImmutableSettings.settingsBuilder() & & & & & & & & & & & & & & & & & &.put(&cluster.name&, &elasticsearch&) & & & & & & & & & & & & & & & & & &.put(&client.transport.sniff&, true).build(); & & & & &
& & & & &Client client = new TransportClient(settings) & & & & &.addTransportAddress(new InetSocketTransportAddress(&192.168.1.106&, 9300)); & & & & &return & & &} & 对这类话题感兴趣?欢迎发送邮件至
& & 关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。 & & 更多我之前的文章,可以访问 & & &
& 转自:/blog/1904064
如非特别注明,本站内容均为原创,转载请务必注明作者和原始出处。
本文地址:
ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例。像Solr4一样,是基于Lucene构建的,支持时间时间索引和全文检索。
大家都在看}

我要回帖

更多关于 elastic search 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信