es中的search主要分为URI Search和 body Search
es提供的一套完整的基于json格式的结构化查询语法
作用:搜索数据,查询语法多,功能强大
以 _search 为endpoint,主要分为字段类查询和复合查询。
只针对某一个字段进行查询
单词匹配:查询语句不做分词处理,直接去匹配字段的倒排索引,
全文匹配:针对text类型的字段进行全文检索,会对查询语句先进行分词处理
包含一个或多个字段类查询或者复合查询语句
bool :布尔查询由一个或多个布尔子句组成
1. must 返回的文档必须满足must子句的条件,并且参与计算分值
2. must_not 返回的文档必须不满足定义的条件
3. filter 返回的文档必须满足filter子句的条件, 不计算分值
4. should 如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回
dis_max
function_score
boosting
TODO
作用:查询Elasticsearch的相关信息。包括集群中的index数量、运行状态、当前集群所在的ip,
URI Search | 作用 |
---|---|
GET _cat/ | 查看cat支持的所有 endpoint 命令 ,常用: health:集群健康信息 nodes:集群节点信息(主节点+数据节点) allocation:集群分配信息(数据节点 与磁盘剩余) |
GET _cat/【endpoint】?help | 查看该endpoint 数据列含义 |
GET _cat/【endpoint】?v | 查看该endpoint的列名+数据 |
GET _cat/【endpoint】?v&h=列名1,列名2… | 查看指定列 |
GET _cat/【endpoint】?v&s=列名 | 指定列排序 |
返回符合条件的文档数
kibana | URI Search | 作用 |
---|---|---|
GET / | http://IP:9200/ | 查看集群信息 |
GET _cat/health?v | 查询集群健康信息 | |
GET _cat/nodes?v | 查询集群节点信息 | |
GET _cat/allocation?v | 查询集群数据节点信息 |
method | kibana | URI Search | 作用 |
---|---|---|---|
GET | GET * | http://IP:9200/_cat/indices?v | 查看所有索引 |
GET | GET {index} | http://IP:9200/{索引名称} | 查看指定索引 |
method | kibana | 等同 URI Search | 作用 |
---|---|---|---|
GET | GET /_search | 空搜索, 搜索集群 下所有文档 | |
GET | GET {index}/_search | http://IP:9200/{索引名称}/_search | 搜索 索引 下所有文档 |
GET | GET {index}/{type}/_search | 搜索 索引/类型 下所有文档 | |
GET | GET /_all/{type}/_search | 搜索 所有索引/类型 的文档 | |
GET | GET {index}/{type}/{id} | 索引/类型/id 获取唯一文档 | |
POST | GET {index}/_search + {json条件} | 高级搜索 |
{
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
}
url | 作用 |
---|---|
GET {index}/_search + {json条件} | 高级搜索 |
GET /索引库名/_search
{
"query":{
"查询类型":{
"查询条件":"查询条件值"
}
}
}
GET /_search
{
"query": {
"match_all": {}
}
}
GET /_search
{
"query": {
"match": {
"price":4000.00
}
}
}
在多个字段中查询。
GET /_search
{
"query": {
"multi_match": {
"query": "zhangsan",
"fields": ["name","nickname"]
}
}
}
关键词匹配查询,不对查询条件进行分词
GET /_search
{
"query": {
"term": {
"name": {
"value": "zhangsan"
}
}
}
}
{
"query": {
"terms": {
"name": ["zhangsan","lisi"]
}
}
}
2019 > timestamp > 2021
{"query":
{"bool":
{"must":
[ {"range":
{"timestamp":
{"from": "2019-05-09T18:25:01.000+0800"},
{"to": "2021-05-09T18:25:01.000+0800"}
}
}
]
}
}
}
{
"_source": ["name","nickname"],
"query": {
"terms": {
"nickname": ["zhangsan"]
}
}
}
{
"_source": {
"includes": ["name","nickname"]
},
"query": {
"terms": {
"nickname": ["zhangsan"]
}
}
}
{
"query": {
"match": {
"name": "zhangsan"
}
},
"highlight": {
"pre_tags": "",
"post_tags": "",
"fields": {
"name": {}
}
}
}
排序
分页查询
## 默认返回10条,可用size指定返回条数,通过from指定位移
curl 'localhost:9200/accounts/person/_search' -d '
{
"query": {
"match" : {
"desc" : "软件"
}
},
"from": 1,
"size": 1
}'
java api
RestClient+SearchSourceBuilder
endPoint
entity/queryStr
BoolQueryBuilder