1. 子条件查询
特定字段查询所指特定值
1.1 Query Context
在查询过程中,除了判断文档是否满足查询条件以外,ES还会计算一个_score来标识匹配程度,旨在判断目标文档的匹配程度。
常用查询有:
- 全文本查询:
针对文本类型数据 - 字段级别查询:
针对结构化数据,如数字和日期等。
1.1.1 全文本查询:
- 模糊匹配
模糊匹配相当于分词后查询,只要字段包含match中的一部分就会被查出。
关键字:match
{
"query": {
"match" : {
"country": "China"
}
}
}
- 习语匹配
习语匹配匹配全文相同。
关键字:match_phrase
{
"query": {
"match_phrase" : {
"country": "China"
}
}
}
- 多字段匹配
关键字:multi_match
field中的每一个都要包含query内容。
{
"query": {
"multi_match" : {
"query": "China",
"fields": ["country", "name"]
}
}
}
- 语法查询
关键字:query_string
{
"query": {
"query_string" : {
"query": "(China AND Edwin) OR 18"
}
}
}
可以指定字段:
{
"query": {
"query_string" : {
"query": "Chine OR Edwin",
"fields": ["country","name"]
}
}
}
1.1.2 字段级别查询
结构化数据的查询
- 字段查询
关键字:term
{
"query": {
"term" : {
"age": 18
}
}
}
- 范围查询
关键字:range
大于等于18,小于30
{
"query": {
"range" : {
"age": {
"gte":18,
"lt":30
}
}
}
}
1.2 Filter Context
在查询过程中只判断该文档是否满足条件,只有0,1。相较于query查询,ES为其提供了缓存,所以更快一些。
关键字为bool
形如:
{
"query": {
"bool" : {
"filter": {
"term": {
"age" : 18
}
}
}
}
}
2. 复合条件查询
以一定的逻辑组合子条件查询
常见查询:
- 固定分数查询
- 布尔查询
...
2.1 固定分数查询
关键字:constant_score,可以通过boost固定分数。
不支持match
{
"query": {
"constant_score":{
"filter": {
"match": {
"name": "Edwin"
}
},
"boost": 3
}
}
}
2.2 布尔查询
关键字:bool。
条件有should、must、must_not等,可以组合filter。
{
"query": {
"bool":{
"should": [
{
"match": {
"name": "Edwin"
}
},
{
"match": {
"country": "China"
}
}
],
"filter":[
{
"range": {
"age": {
"gt": 18
}
}
}
]
}
}
}
3. 常用系统指令
删除索引
eg:test
curl -XDELETE http://localhost:9200/test
该指令可以直接删除一个索引
cluster是集群级指令,可以用于查看集群
查看未分配分片:
GET /_cluster/allocation/explain
当集群存在未分配的分片时,该指令可以给出未分配分片的原因:

cat指令将一些json信息用表格的方式输出出来,可以用于获取集群的相关记录。
官网doc:
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html
常用:
查询节点的列表:
GET /_cat/nodes?v
查看集群index
GET /_cat/indices?v
查看集群健康状态:
GET /_cat/health?v