ElasticSearch高级查询

1. 子条件查询

特定字段查询所指特定值

1.1 Query Context

在查询过程中,除了判断文档是否满足查询条件以外,ES还会计算一个_score来标识匹配程度,旨在判断目标文档的匹配程度。

常用查询有:

  • 全文本查询:
    针对文本类型数据
  • 字段级别查询:
    针对结构化数据,如数字和日期等。
1.1.1 全文本查询:
  1. 模糊匹配
    模糊匹配相当于分词后查询,只要字段包含match中的一部分就会被查出。
    关键字:match
{
    "query": {
        "match" : {
            "country": "China"
        }
    }
}
  1. 习语匹配
    习语匹配匹配全文相同。
    关键字:match_phrase
{
    "query": {
        "match_phrase" : {
            "country": "China"
        }
    }
}
  1. 多字段匹配
    关键字:multi_match
    field中的每一个都要包含query内容。
{
    "query": {
        "multi_match" : {
            "query": "China",
            "fields": ["country", "name"]
        }
    }
}
  1. 语法查询
    关键字:query_string
{
    "query": {
        "query_string" : {
            "query": "(China AND Edwin) OR 18"
        }
    }
}

可以指定字段:
{
    "query": {
        "query_string" : {
            "query": "Chine OR Edwin",
            "fields": ["country","name"]
        }
    }
}
1.1.2 字段级别查询

结构化数据的查询

  1. 字段查询
    关键字:term
{
    "query": {
        "term" : {
            "age": 18
        }
    }
}
  1. 范围查询
    关键字: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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 子条件查询 子条件查询指特定字段查询所指特定值 全文本查询 全文本查询针对文本类型数据 字段级别查询 针对结构化数...
    bullion阅读 5,499评论 0 0
  • 绿王阅读 1,729评论 3 2
  • 亲爱的大小毛: 新的学期开始了,爸爸妈妈希望新学期里大小毛能爱上阅读,养成阅读的好习惯。为给你们创造阅读环...
    美美随笔阅读 2,662评论 0 0
  • #基本情况# 姓名:谌彦翰 年龄:11岁 小组:第5组 #90天目标及完成情况# 1、家长目标:每周至少健步走4次...
    谌辉阅读 1,265评论 0 0
  • 我爱的杰哥: 杰哥,我喜欢你大概有七年了吧。第一次知道你是在七年前的跨年演唱会上,你跟娜姐唱了那首《何必在一起》。...
    听说你也喜欢抹茶味儿阅读 4,055评论 4 10

友情链接更多精彩内容