Elasticsearch 5.4 Query DSL

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: Elasticsearch提供了丰富的查询语句DSL,查询可分2类:Leaf Query:查询特定字段特定值的查询,可以单独使用,比如match查询、term查询、range查询。

Elasticsearch提供了丰富的查询语句DSL,查询可分2类:

  1. Leaf Query:查询特定字段特定值的查询,可以单独使用,比如match查询、term查询、range查询。
  2. Compound Query:组合查询,组合多个简单查询或者特殊查询。

    先占坑,有时间更新Y(^_^)Y

一、Query和Filter的区别

Query是真正的信息检索,会用到检索模型进行评分,回答的是查询和文档的匹配程度;Filter是过滤机制,回答的是Yes Or NO。

二、Match All Query

match all query会返回所有文档,文档的得分都是1。

GET /_search
{
    "query": {
        "match_all": {}
    }
}

也可以通过boost参数修改得分:

GET /_search
{
    "query": {
        "match_all": { "boost" : 1.2 }
    }
}

match_none是match_all的取反,不返回任何文档:

GET /_search
{
    "query": {
        "match_none": {}
    }
}

三、Full Text Query(全文查询)

3.1 match query

GET /_search
{
    "query": {
        "match" : {
            "message" : "this is a test"
        }
    }
}

message是被搜索字段,this is a test是query内容,分词后query中的任何一个关键字被匹配文档就会被搜索到。如果想查询匹配所有关键词的文档,可以用and操作符连接:

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "this is a test",
                "operator" : "and"
            }
        }
    }
}

3.2 match phrase query

match phrase query首先会把query内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到:

  1. 分词后到所有词项都要出现在该字段中
  2. 字段中到词项顺序要一致

    例如,有三个文档:

{ "foo":"I just said hello world" }

{ "foo":"Hello world" }

{ "foo":"World Hello" }

使用match_phrase查询”hello world”:

{
  "query": {
    "match_phrase": {
      "foo": "Hello World"
    }
  }
}

只有前2个文档会被匹配。

3.3 match phrase prefix query

match_phrase_prefix和match_phrase类似,只不过match_phrase_prefix支持最后一个term前缀匹配:

GET /_search
{
    "query": {
        "match_phrase_prefix" : {
            "message" : "quick brown f"
        }
    }
}

3.4 multi match query

multi_match是match的升级,用于搜索多个字段:

GET books/_search
{
  "query": {
    "multi_match" : {
      "query":    "java虚拟机", 
      "fields": [ "title", "description" ],
      "operator" : "and"
    }
  }
}

字段的名称可以使用通配符:

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "Will Smith",
      "fields": [ "title", "*_name" ] 
    }
  }
}

同时,也可以用指数符指定权重:

GET /_search
{
  "query": {
    "multi_match" : {
      "query" : "this is a test",
      "fields" : [ "subject^3", "message" ] 
    }
  }
}

3.5 common terms query

3.6 query string query

3.7 simple query string query

四、Term Level Query(term级别查询)

4.1 term query

4.2 terms query

4.3 range query

4.4 exists query

4.5 prefix query

4.6 wildcard query

4.7 regexp query

4.8 fuzzy query

4.9 type query

4.10 ids query

五、Compound Query(组合查询)

5.1 constant score query

5.2 bool query

5.3 Dis max query

5.4 Function Score query

5.5 boosting query

5.6 indices query

六、Joining Query(嵌套查询)

6.1 nested query

6.2 has child query

6.3 has parent query

6.4 parent id query

七、Geo Query(地理位置查询)

geoshape query

geo bounding query

geo distance query

geo distance range query

geo polygon query

八、Specialized Query(特殊查询)

8.1 more like this query

8.2 template query

8.3 script query

8.4 percolate query

九、Span Query

9.1 span term query

9.2 span multi term query

9.3 span first query

9.4 span near query

9.5 span or query

9.6 span not query

9.7 span containing query

9.8 span within query

9.9 span field masking query

十、minimum should match

十一、multi term query rewrite

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
Web App开发 自然语言处理 API
巧记Elasticsearch常用DSL语法
记知识先记轮廓,关于DSL语法的轮廓,记住以下3句话即可:1.索引、文档和查询。2.Match、Term和Bool。3.还有翻页和聚合
巧记Elasticsearch常用DSL语法
|
9月前
|
数据采集 JSON 数据挖掘
Elasticsearch 的DSL查询,聚合查询与多维度数据统计
Elasticsearch的DSL查询与聚合查询提供了强大的数据检索和统计分析能力。通过合理构建DSL查询,用户可以高效地搜索数据,并使用聚合查询对数据进行多维度统计分析。在实际应用中,灵活运用这些工具不仅能提高查询效率,还能为数据分析提供深入洞察。理解并掌握这些技术,将显著提升在大数据场景中的分析和处理能力。
430 20
|
SQL Java 关系型数据库
spring data elasticsearch 打印sql(DSL)语句
spring data elasticsearch 打印sql(DSL)语句
906 0
|
JSON 自然语言处理 算法
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
DSL查询文档、RestClient查询文档、全文检索查询、精准查询、复合查询、地理坐标查询、分页、排序、高亮、黑马旅游案例
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
|
JSON 自然语言处理 数据格式
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
300 0
|
存储 数据库 索引
面试题ES问题之动态映射的定义如何解决
面试题ES问题之动态映射的定义如何解决
149 1
|
存储 JSON 物联网
【Elasticsearch】学好Elasticsearch系列-Query DSL 1
【Elasticsearch】学好Elasticsearch系列-Query DSL
266 0
|
自然语言处理 索引
Elasticsearch之常用DSL语句
mapping是对索引库中文档的约束
351 1
|
Java 索引
ElasticSearch DSL操作
ElasticSearch DSL操作
209 1
|
JSON 自然语言处理 算法
【Elasticsearch】DSL查询文档
【Elasticsearch】DSL查询文档
595 0