文档是结合几个博客整理出来的,内容大部分为转载内容。在使用过程中,对一些疑问点进行了整理与解析。
一、所使用版本的介绍
使用的是elasticsearch2.4.3版本,在此只是简单介绍搜索部分的api使用
二、简单的搜索
使用api的时候,基本上可以将DSL搜索的所有情况均写出来,在此给出一个最简单搜索的全部的过程以及代码,之后将对不同的搜索只是针对函数进行介绍
(1)DSL搜索
对于最简单的DSL搜索,对一个词进行搜索使用url直接进行通信,例如,如果对于一个字段,
搜索具体的一个term或者query,DSL如下所示:
{“query”:{"term":{"title":"molong1208 blog"}}}
这个搜索的含义是:在title字段,搜索内容为molong1208 blog;上面是DSL的写法,实际上对于简单的查询,也可以直接使用url查询,不带json格式,假设我们所使用的服务器ip是localhost,对于如上的查询可以写为:
localhost:9200/index/type/_search? q=title:molong1208 blog
这个写法与上边的DSL语言是同样的功能的,但是这种写法只是一些简单的查询才可以用,例如显示想要的字段,按照某一字段排序等
localhost:9200/index/type/_search? q=title:molong1208 blog&fields=name,title&sort=id:desc&pretty=true
上述url的意思就是在index/type里面的title字段搜索内容,并且显示的字段为name以及title,按照id降序排序,输出的格式为美化的json格式
(2)使用java api 实现简单搜索
1、建立连接
java api使用搜索的时候,必须先进行连接,在直接url的时候是端口9200,但是在使用程序的时候为9300,如下所示,建立客户端的连接,在connection类里面给出初始化函数
1 private static voidopen()2 {3 Settings settings =Settings.settingsBuilder()4 .put("cluster.name", "molong").build();5
6 try{7 client =TransportClient.builder().settings(settings).build()8 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));9 } catch(UnknownHostException e) {10 //TODO Auto-generated catch block
11 e.printStackTrace();12 }13
14 }
在此使用的是TransportClient连接,还有一个Nodeclient,没使用过,在此不做介绍
2、进行查询
查询的时候,需要建立一个Se