首页 > 其他分享 >ElasticSearch常用查询(一)

ElasticSearch常用查询(一)

时间:2024-11-17 14:07:04浏览次数:1  
标签:常用 name GET search 查询 ElasticSearch query article

一、前言

​ 以前做的某个项目中包含了大量的查询聚合,现在有时间整理一番,记录一下ES常用查询聚合语法。

二、常用查询语法

2.1 match 查询

​ match查询,模糊匹配(自动分词),在进行分词的模糊匹配时,要求该字段的类型是text..keyword类型。

GET article/_search
{
  "query": {
    "match": {
      "content": "描述天气状况"
    }
  }
}


------------------------------------------------------
// 可以使用下面测试数据查看效果.
{"mappings":{"doc":{"properties":{"content":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"view_count":{"type":"long"},"article_name":{"type":"keyword"}}}}}

POST article/doc/
{
  "article_name":"文章一",
  "content":"这是一篇测试文章,想要测试一下match查询语法,你知道吗?",
  "view_count":27
}

POST article/doc/
{
  "article_name":"文章二",
  "content":"这是一篇天气的相关描述,你知道当前的天气状况吗?",
    "view_count":2
}

match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程,match查询相当于模糊匹配,只包含其中一部分关键词就行

2.2 match_all查询

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

2.3 multi_match查询

GET article/_search
{
  "query": {
    "multi_match": {
      "query": "知道",
      "fields": ["content"]
    }
  }
}

GET article/_search
{
  "query": {
    "multi_match": {
      "query": "文章",
      "fields": ["content"]
    }
  }
}

2.4 term查询

term查询相当于sql里面的 a = 'A'; 并且字段的类型不能为分词类型.

GET article/_search
{
  "query": {
    "term": {
      "article_name": {
        "value": "文章二"
      }
    }
  }
}

2.4 terms查询

​ terms查询相当于sql中的in 语句.

GET article/_search
{
  "query": {
    "terms": {
      "article_name": [
        "文章一",
        "文章二"
      ]
    }
  }
}

2.5 range查询

gte 表示 大于等于gt表示大于;

lte表示小于等于lt表示小于

GET article/_search
{
  "query": {
    "range": {
      "view_count": {
        "gte": 10,
        "lte": 40
      }
    }
  }
}

2.7 exists查询

GET article1/_search
{
  "query": {
    "exists": {
      "field":"view_count"
    }
  }
}

-------------------------------------------
再添加一条没有view_count的数据,用来测试
POST article1/doc/
{
  "article_name":"文章三",
  "content":"这是一篇天气的相关描述,你知道当前的天气状况吗?"
}

2.8 wildcard模糊查询

​ 模糊查询时,需要在关键词前后添加*, 并且,搜索的这个字段如果是text..keyword 这种动态类型,在搜索时需要在搜索字段后添加.keyword

​ 如果搜索的这个字段的数据类型是keyword类型,则不需要添加.keyword,但是按照keyword类型存储长文本,可能会损耗性能。

-- content字段是text...keyword类型

GET article/_search
{
  "query": {
    "wildcard": {
      "content.keyword": {
        "value": "*测试*"
      }
    }
  }
}

2.9 bool查询

bool查询,也就是多条件查询,可以将上述的简单查询条件组成不同的复杂多条件查询;其中bool需要搭配以下的查询:

(1)must查询:sql里的and关系

(2)must_not查询:和must相反

(3)should查询:sql里的or关系

(4)filter查询:也是and关系,只是说filter查询没有分数概念。

-- 查询出 article_name = "文章一" and view_count = 27 and article_name != "文章二"

GET article/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term":{
            "article_name": "文章一"
          }
        },
        {
          "term":{
            "view_count": 27
          }
        }
      ],
      "must_not": [
        {
          "term":{
            "article_name": "文章二"
          }
        }
      ]
    }
  }
}


-- 查询出文章名称为"文章一" 或者浏览量为2的数据     ---------------------
GET article/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term":{
            "article_name": "文章一"
          }
        },
        {
          "term":{
            "view_count": 2
          }
        }
      ]
    }
  }
}

-- 查询出文章名称为"文章一"并且浏览量为2的数据     -------------------------
GET article/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term":{
            "article_name": "文章一"
          }
        },
        {
          "term":{
            "view_count": 2
          }
        }
      ]
    }
  }
}

2.10 must查询

GET article/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "article_name": {
              "value": "文章一"
            }
          }
        }
      ]
    }
  }
}

2.11 must_not查询

GET article/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "term": {
            "article_name": {
              "value": "文章一"
            }
          }
        }
      ]
    }
  }
}

2.11 should查询

GET article/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "article_name": {
              "value": "文章一"
            }
          }
        }
      ]
    }
  }
}

2.13 filter查询

GET article/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "article_name": {
              "value": "文章二"
            }
          }
        },
        {
          "terms":{
            "view_count":[
              2,27
              ]
          }
        }
      ]
    }
  }
}

2.14 geo_distance地理位置圆形查询

查询方圆3000m范围内所有的用户(geo_distance)

GET user_address_info/_search
{
    "query": {
        "geo_distance": {
            "address_point": [
                114.067,
                22.55
            ],
            "distance": 3000,
            "unit":"m",
            "distance_type": "arc"
        }
    }
}

-----------------使用下面测试索引查询-----------------------------------
PUT user_address_info/
{
  "mappings":{
    "doc":{
      "properties": {
            "address_point": {
                "type": "geo_point"
            },
            "name": {
                "type": "keyword"
            }
        }
    }
  }
}

---- 插入一条数据
POST user_address_info/doc
{
  "name":"少年宫",
  "address_point":[114.067406,22.553121]
}

标签:常用,name,GET,search,查询,ElasticSearch,query,article
From: https://www.cnblogs.com/duanxiaobiao/p/18550363

相关文章

  • 小北的字节跳动青训营与从SQL到自然语言查询的数据库新范式——连接数据库:通过链和代
     前言    最近,字节跳动的青训营再次扬帆起航,作为第二次参与其中的小北,深感荣幸能借此机会为那些尚未了解青训营的友友们带来一些详细介绍。青训营不仅是一个技术学习与成长的摇篮,更是一个连接未来与梦想的桥梁~小北的青训营XMarsCode技术训练营——AI加码,字节......
  • POLIR-Goverment-备案网站: 查询网站在 "公安部"备案的运营"公司/个人信息" @互联网信
    严格意义上,是"公安部"的"网络安全保卫局"管理网站备案查询备案的政府网站https://beian.mps.gov.cn/#/query/webSearch备案通过的公网(Internet)网站,会颁发一个“公网备案号”,而且在该网站的网页上,必需对访问的用户公布这个“公网备案号”。访问网站时,如果发现网站上联系......
  • langchain_chatchat+ollama部署本地知识库,联网查询以及对数据库(Oracle)数据进行查询
    langchain_chatchat+ollama部署本地知识库,联网查询以及对数据库(Oracle)数据进行查询涉及的内容其实挺多的,所以尽量减少篇幅目录langchain_chatchat+ollama部署本地知识库,联网查询以及对数据库(Oracle)数据进行查询准备工作:部署ollama以及拉取模型部署langchain_chatchat部署ora......
  • ssm125四六级报名与成绩查询系统+jsp(论文+源码)_kaic
     毕业设计(论文)题目:四六级报名与成绩查询系统的设计与实现      摘 要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混......
  • es中的多条件查询
    在Elasticsearch中,可以使用bool查询来执行多条件查询。bool查询允许你组合其他查询类型,如match、term等,通过must(所有条件都要满足)、should(至少满足一个条件)、must_not(所有条件都不能满足)等逻辑操作符来实现。以下是一个使用bool查询的多条件查询的例子GET对应索引名称/_sea......
  • ElasticSearch restful语法
    ElasticSearch基础学习1.Elasticsearch的基本概念Index(索引):相当于数据库中的表,存储一类文档。Document(文档):索引中的一条记录,使用JSON格式表示。Type(类型):文档的分类,Elasticsearch7.x之后已不再推荐使用。Field(字段):文档中的键值对。2.常用的CRUD操作2.1创建索引......
  • java常用类的练习题
    输入三个字名字的拼音每个字的拼音之间用空格隔开,形式如下:输入—>Javadingzhen输出—>zhen,Java.D/***@AuthorJava顶针*@Version1.0*/publicclassTest03{publicstaticvoidmain(String[]args){Stringname="wangqingshan";p......
  • java常用类的练习题
    输入一个字符串,对里面的字符类型进行统计packagechapter13.Test;/***@AuthorJava顶针*@Version1.0*/publicclassTest04{//判断字符串里包含多少个大、小写字母、数字publicstaticvoidmain(String[]args){Stringname="ASefsfjklAAEf56......
  • Django SQL 查询优化方案:性能与可读性分析
    DjangoSQL查询优化方案:性能与可读性分析目录⚙️使用DjangoORM的raw()方法进行SQL查询......
  • 高效Django随机查询优化方案
    高效的Django随机查询优化方案目录......