1.与elasticsearch交互
下载安装:
https://www.elastic.co/cn/downloads/elasticsearch
https://www.elastic.co/start
ElasticSearch 为java用户提供了两种内置客户端
- 节点客户端(node client)
以无数据节点的身份加入集群,不存储任何数据,但知道数据在集群中的位置 - 传输客户端(Transport client)
不加入集群,只是简单转发请求。
两种都是以9300端口进行集群交互,使用elasticSearch传输协议,集群节点之间 也是用 9300 端口进行同行。
2.elasticsearch操作
官方文档入口:https://www.elastic.co/guide/index.html
javaApi:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
基于Http 协议,以JSON为数据交互格式的Restful API
格式:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
1. VERB: HTTP方法: GET , POST , PUT , HEAD , DELETE
2. HOST:Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost
3. PORT:Elasticsearch HTTP服务所在的端口,默认9300
4. PATH:API路径(例如_count将返回集群中文档的数量),PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/jvm
5. QUERY_STRING:一些可选的查询请求参数,例如 ?pretty 参数将使请求返回更加美观易读的JSON数据
6. BODY:一个JSON格式的请求主体(如果请求需要的话)
例如:curl -XGET "http://localhost:9200/_count?pretty" -d "
----------
{
"count" : 5,
"_shards" : {
"total" : 21,
"successful" : 21,
"failed" : 0
}
}
使用官方可视化工具调试开发,http://localhost:5601/app/kibana#/dev_tools/console?_g=()
3.elasticsearch基本概念和使用
基本概念
RDBMS(Relation DataBase Manage System)与ES(ElasticSearch)关系
RDBMS 》 DB 》 Tables 》 数据描述(colum+具体data)
ES 》 indices 》 Types 》 document(fields+值)
1. es是面向文档的,即es可以储存整个对象/文档
2. 文档序列化格式:JSON,javascrip object notaion
3. 索引:indexing
4. 搜索:search
5. 聚合:aggregaton
添加
PUT /website/blog/1
{
"title":"hello elastic search",
"text":"just for test"
}
*简单搜索:
GET /megacorp/employee/_search
GET /megacorp/employee/_search?q=last_name:Smith
*DSL(Domain Specific Language,特定领域语言)语句查询
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}
*更复杂的搜索。query:查询条件, filter:过滤器,match:匹配
GET /megacorp/employee/_search
*全文搜索:
GET /website/blog/_search
{
"query": {
"match": {
"title": "first blog e"
}
}
}
*短语搜索,match_phrase
GET website/blog/_search
{
"query": {
"match_phrase": {
"title": "first blog e"
}
}
}
*高亮搜索结果,highlight
GET website/blog/_search
{
"query": {
"match_phrase": {
"title": "first blog "
}
},
"highlight": {
"fields": {
"title": {}
}
}
}
*分析 aggregations,
GET website/blog/_search
{
"aggs": {
"same_date": {
"terms": {"field": "date"}
}
}
}
*允许分级汇总
例如:
GET /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": {
"field": "interests"
},
"aggs": {
"avg_age": {
"avg": {
"field": "age"
}
}
}
}
}
}
小结
- 基本安装
- 使用,使用 Kibana进行测试
- 添加document
- 简单查询
- 全文检索,短语匹配,高亮结果、聚合
还有其他高级功能例如,推荐、定位、渗透、模糊、部分匹配等等没有提到