通过curl调用进行学习。
需要安装的工具
ElasticSearch,由于项目开始使用了Spring JPA,这里先用了2.4.0版本;
curl,7.58.0版本,路径加入PATH环境变量;利用URL语法在命令行方式下工作的开源文件传输工具。
cygwin,Windows平台的类UNIX环境,执行curl命令的命令行窗口。
curl调用的Restful API格式
VERB PROTOCOL://HOST:PORT/PATH?QUERY_STRING -d BODY
VERB:HTTP方法,GET POST PUT HEAD DELETE
PROTOCOL:http或者https协议(ES前面有https代理的时候可用)
HOST:ES集群中的任何一个节点的主机名,如果是本地节点,就是localhost
PORT:ES的HTTP服务所在的端口,默认9200
PATH:API路径,譬如_count,_search,_cluster,_nodes等;可以包含多个组件,如_cluster/stats或者_nodes/stats/jvm
QUERY_STRING:一些可选的查询请求参数,譬如?pretty
BODY:JSON格式的请求主体。
范例:
curl -XGET 'http://localhost:9200/_count?pretty' -d
'{
"query": {
"match_all": {}
}
}'
ES的返回体:
{
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}
入门命令
文档索引:PUT命令(参数包含索引、类型、ID,带ID索引),POST命令(参数包含索引、类型,不带ID索引);
文档检索:GET命令(参数包含索引、类型、ID);
文档删除:DELETE命令(参数包含索引、类型、ID);
文档存在判断:HEAD命令;
文档更新:PUT命令;
简单搜索:GET /db/table/_search,GET /db/table/_search?q=name:xxx(查询语句传递给参数q)
DSL查询
GET方法,_search命令,JSON请求体参数。
GET /db/table/_search
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}
过滤器:
GET /megacorp/employee/_search
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 } <1>
}
},
"query" : {
"match" : {
"last_name" : "smith" <2>
}
}
}
}
}
其他相关概念
全文搜索:结果相关性评分,分词后处理
短语搜索:确切匹配若干个单词或者短语
高亮搜索:highlight参数
聚合分析:aggs