Elasticsearch DSL版

embedded/2025/1/8 3:16:17/

文章目录

    • 1.索引库操作
      • 创建索引库:
      • 删除索引库:
      • 查询索引库:
      • 修改索引库:
      • 总结
    • 2.文档操作
      • 创建文档:
      • 查询文档:
      • 删除文档:
      • 全量修改文档:
      • 增量修改文档:
      • 总结
    • 3.DSL查询语法(前4个由query属性包裹)
      • 1.全文查询(3种)
        • match_all
        • match
        • multi_match
      • 2.精确查询(2种)
        • term
        • range
      • 3.地理查询(2种)
        • geo-bounding_box
        • geo_distance
      • 4.复合查询(2种)
        • function score Query
        • Bool Query
      • 5.搜索结果处理(3种)同级属性
        • sort排序
        • from/size分页
        • higlight高亮
      • 6.总结(4个顶级属性)

1.索引库操作

创建索引库:

PUT /索引库名
{"mapping":{"properties":{"字段名":{"type":"字段的类型"}//..略   }},
}//提高查询效率的方式
//将字段名1、2加入到all,那么查询直接搜索all一个字段效率提高2倍
PUT /索引库名
{"mapping":{"properties":{"字段名1":{"type":"字段的类型","copy_to":"all"},"字段名2":{"type":"字段的类型","copy_to":"all"},"all":{"type":"text","analyzer":"ik_max_word"}  }},
}
//搭配查询使用
GET /索引库名
{"query":{"match":{"all":"搜索内容"}}
}

删除索引库:

DELETE /索引库名

查询索引库:

GET /索引库名

修改索引库:

PUT /索引库名/_mapping
{"properties":{"新字段名":{"type":"类型"}}
}

总结

只有创建、修改需要请求体

2.文档操作

创建文档:

POST /索引库名/_doc/文档id
{"字段1":"","字段2":"","字段3":{"字段3-1":"","字段3-2":""}
}

查询文档:

GET /索引名/_doc/文档id

删除文档:

DELETE /索引库名/_doc/文档id

全量修改文档:

//若文档id不存在就是新增操作,否则就是全部修改PUT /索引库名/ _doc/文档id
{"字段1":"","字段2":""
}

增量修改文档:

POST /索引库名/ _update/文档id
{"doc":{"需要修改的字段名":"新的值"}
}

总结

只有创建、修改需要请求体

3.DSL查询语法(前4个由query属性包裹)

1.全文查询(3种)

match_all
// 1.查询所有
GET /索引库名/_search
{"query": {"match_all": {}}
}
match
// 2.单个字段查询,建议创建文档的时候把多个要查询的字段copy_to到一个字段all,提高查询性能
//all字段名
GET /索引库名/_search
{"query": {"match": {"all": "乡愁"}}
}
multi_match
// 3.多个字段查询
GET /索引库名/_search
{"query": {"multi_match": {"query": "需要查询内容","fields": ["字段1","字段2"]}}
}

2.精确查询(2种)

term
# 1.根据词条精确值查询
GET /索引库名/_search
{"query": {"term": {"字段名1": {"value": "内容"}}}
}
range
# 2.根据值得范围查询
#有e结尾代表=
GET /mingyue/_search
{"query": {"range": {"age": {"gt": 10,"lte": 20}}}
}

3.地理查询(2种)

geo-bounding_box
// 1.查询geo_point值落在某个矩形范文内得所有文档,大白话就是两个点相连形成的矩形
// 用的比较少
GET /索引库名/_search
{"query":{"geo-bounding_box":{"geo_point类型的字段":{"top_left":{"lat":31.1,"lon":121.9},"buttom_right":{"lat":38.1,"lon":121.9}}}}
}
geo_distance
//2.查询指定中心点范围内得所有文档
// 用的多
GET /索引库名/_search
{"query":{"geo_distance":{"distance":"15km","geo_point类型的字段":"经度,纬度"}}
}

4.复合查询(2种)

function score Query
// 1.function score Query
GET /索引库名/_search
{"query":{"function_score":{# 原始查询规则"query":{"match":{"字段名":"内容"}},"functions":'[{"filter":{"term":{"id":"1"}},# 过滤条件"weight":10 #算分函数}],"boost_mode":"multiply" # 算分函数}}
}
Bool Query
// 2.Bool Query 4个属性
GET /索引库名/_search
{"query":{"bool":{"must":[#类似与{"term":{"字段名1":"内容"}}],"should":[#类似或{"term":{"字段名2":"内容1"}}{"term":{"字段名2":"内容2"}}],"must_not":[#类似非,不参与算分,意思是不匹配<=500的{"range":{"字段名3":{"lte":500}}}],"filter":[#必须匹配>=45,不参与算分{"range":{"字段名4":{"gte":45}}}],}}
}

5.搜索结果处理(3种)同级属性

sort排序
// 1.排序
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc"_geo_distance":{"geo_point类型的字段名":"经度,纬度","geo_point类型的字段名":{ # 对象方式书写"lat":经度"lon":纬度},"order":"排序方式","unit":"km"# 单位}}
}
from/size分页
// 2.分页
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc},"from":页码,"size":条数
}
higlight高亮
// 2.高亮
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc},"highlight":{"fields":{# 指定要高亮的字段"字段名":{"require_field_match":"false" #搜索字段与高亮字段不一致需要加上}}},"from":页码,"size":条数
}

6.总结(4个顶级属性)

查询语法有4个顶级属性

分别是query、sort、from/size、highlight


http://www.ppmy.cn/embedded/152171.html

相关文章

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

Android 第三方框架:图片加载:Glide:源码分析:缓存

文章目录 内存缓存:MemoryCache 类结构小结磁盘缓存:DiskCache 类结构总结内存缓存:MemoryCache 类结构 MemoryCache接口、LruCache<T, Y>类、LruResourceCache类 LruResourceCache继承LruCache<Key, Resource<?>>,增删改查操作主要是继承来的方法 …

小R的蛋糕分享

小R的蛋糕分享 问题描述 小R手里有一个大小为 n 行 m 列的矩形蛋糕&#xff0c;每个小正方形区域都有一个代表美味度的整数。小R打算切割出一个正方形的小蛋糕给自己&#xff0c;而剩下的部分将给小S。她希望两人吃的部分的美味度之和尽量接近。 我们定义小R吃到的部分的美味度…

数仓建模(二) 从关系型数据库到数据仓库的演变

从传统数据库出发&#xff0c;帮助读者更好理解数仓的核心价值和基本结构 目录 先问 1. 什么是关系型数据库&#xff1f; 2. 为什么需要数据仓库&#xff1f; 第一部分&#xff1a;关系型数据库的核心特点与局限性 1.1 什么是关系型数据库&#xff1f; 1.1.1 关系型数据…

被催更了,2025元旦源码继续免费送

“时间从来不会停下&#xff0c;它只会匆匆流逝。抓住每一刻&#xff0c;我们才不会辜负自己。” 联系作者免费领&#x1f496;源&#x1f496;码。 三联支持&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;亲爱的朋友们&#xff0c;感谢你…

C# 中 `new` 关键字的用法

在 C# 中&#xff0c;new 关键字用于修饰方法、属性、索引器或事件声明时&#xff0c;表示当前成员隐藏基类中同名的成员。它们之间的具体区别如下&#xff1a; 不加 new&#xff1a; 如果子类定义了一个与父类同名的方法&#xff0c;但没有使用 new 关键字&#xff0c;编译器会…

网络设备安全

21.1 概况 1&#xff09;交换机安全威胁 交换机是构成网络的基础设备&#xff0c;主要的功能是负责网络通信数据包的交换传输 MAC 地址泛洪&#xff08;flooding&#xff09;&#xff1a;通过伪造大量的虚假 MAC 地址发往交换机ARP&#xff08;地址解析协议&#xff08;Addr…

docker优雅停止容器

优雅停止容器 docker stop: 先请求容器进程停止&#xff0c;如果10秒后未停止&#xff0c;将会强制kill该进程。 docker stop命令试图向容器内的根进程&#xff08;PID1&#xff09;发送SIGTERM信号来停止正在运行中的容器。如果根进程在超时时间&#xff08;默认10s&#xff…