微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ElasticSearch 进阶 高级查询

需要了解elasticSearch基础入门可以查看https://blog.csdn.net/u014232211/article/details/120026239

下面的例子基于这份数据来查询

 

高级查询

a.子条件查询 特定字段查询所指特定值

  • Query Contexy:
    • 概念:查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配程度,旨在判断目标文档和查询条件匹配的有多好/多么吻合。
    • 全文本查询: 针对文本类型数据
      • 模糊匹配(查询author的数据是problem1的蔬果)
        {
            "query":{
                "match":{
                    "author": "problem1"
                }
            }
        }
      • 其余匹配(整个字段匹配,不拆分单词去匹配)
        {
            "query":{
                "match_phrase":{
                    "title": "NBA333"
                }
            }
        }
      • 多个字段匹配 (author和titile中包含NBA333的字段)
        {
            "query":{
                "multi_match":{
                    "query": "NBA333",
                    "fields": ["author","title"]
                }
            }
        }
      •  字符串查询
        {
            "query":{
                "query_string":{
                    "query": "problem1 AND problem2",
                    "fields": ["author"]
                }
            }
        }
    • 字段级别查询: 针对结构化数据,如数字、日期等

      •   字段查询
        {
            "query":{
                "term":{
                    "word_count": "2000"
                }
            }
        }
      • 范围查询
        {
            "query":{
                "range":{
                    "word_count": {
                        "gte": 1000,
                        "lte": 2000000
                    }
                }
            }
        }

        (日期类型)

        {
            "query":{
                "range":{
                    "publish_date": {
                        "gte": "2021-01-01",
                        "lte": "2021-02-02"
                    }
                }
            }
        }
  • Filter Context
    • 概念:在查询过程中,只判断文档是否满足条件,只有Yes或者No
    • filter要配合bool一起使用,filter结果es会缓存,查询比文本块
    • eg:
      {
          "query":{
              "bool":{
                  "filter":{
                      "term":{
                          "word_count": 2000
                      }
                  }
              }
          }
      }

b.复合条件查询 以一定的逻辑组合子条件查询

  • 固定分数查询
    {
        "query":{
            "constant_score":{
                "filter":{
                    "match":{
                        "author":"problem1"
                    }
                },
                "boost":10
            }
            
        }
    }
  • 布尔查询
    {
        "query":{
            "bool":{
               "should":[
                   {
                       "match":{
                            "author": "problem1"
                       }
                   },
                   {
                       "match":{
                            "title": "男孩"
                       }
                   }
               ]
            }  
        }
    }
    {
        "query":{
            "bool":{
               "must_not":[
                   {
                       "match":{
                            "author": "problem1"
                       }
                   },
                   {
                       "match":{
                            "title": "男孩"
                       }
                   }
               ],
               "filter":{
                   "term":{
                        "word_count": 5000
                    }
               }
            }  
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐