ElasticSearch初识之Restful

通过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

猜你喜欢

转载自blog.csdn.net/achang07/article/details/79709760