elasticsearch query dsl
1.match / match_phrase / match_phrase_prefix / multi_match【查询】
1.1 match 它会根据所给的字符串,进行分词,然后去找出,包含这些分词结果的记录。
GET /_search
{
"query": {
"match": {
"title": "我今天看了一场电影"
}
}
} 中文好用的是ik的两个分词器 ik_max_word 和 ik_smart
ik_max_word : 会将文本做最细粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌」,会穷尽各种可能的组合;
ik_smart : 会将文本做最粗粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、国歌」;
提示:做精确匹配搜索时,你最好用过滤语句,因为过滤语句可以缓存数据。
1.2 match_phrase 是短语匹配 比 match 精准一点,因为有时候 match 会分词出更多的词。
1.3 match_phrase_prefix 实现查询时输入即搜索查询时输入即搜索,prefix是前缀的意思,有正则匹配去搜索的意味,只要前缀满足就会都被查询到。
参考链接:https://blog.csdn.net/chuan442616909/article/details/57917260
1.4 multi_match 它查询允许你做 match 查询的基础上同时搜索多个字段
GET dm_map_news/_search
{
"query": {
"multi_match": {
"query": "中国",
"fields": ["title","content"]
}
}
}
2.插入数据
#put插入数据一定要有_id,可以自己指定
PUT lagou/job/1
{
"name":"ppp",
"age":12
} #post插入数据,可以没有_id,他会自己随机生成一个_id
POST lagou/job/
{
"name":"ppp",
"age":13
}
3.bool 【查询、过滤】
must : 多个查询条件的完全匹配,相当于 and
must_not : 多个查询条件的相反匹配,相当于 not
should : 至少有一个查询条件匹配,相当于 or
{
"bool": {
"must": { "match": { "title": "how to make millions" }},
"must_not": { "match": { "tag": "spam" }},
"should": [
{ "match": { "tag": "starred" }},
{ "range": { "date": { "gte": "2014-01-01" }}}
]
}
}
适合于复杂的查询条件
4.term 【过滤】
主要是用于精准匹配.比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型),但是如果字段是分词的,也可以查得到。
GET dm_map_news/_search
{
"_source": "title",
"query": {
"term": {
"title": {
"value": "中国"
}
}
}
}
5.terms 【过滤】
允许多个匹配条件,如果某个字段指定了多个值,那么文档需要一起去做匹配,只要符合其中一个即可
GET dm_map_news/_search
{
"_source": "title", # 只显示title资格字段
"query": {
"terms": {
"title": [
"中国",
"新闻"
]
}
}
}
6.range 【过滤】
过滤允许我们按照指定范围查找一批数据
gt :大于
gte :大于等于
lt : 小于
lte : 小于等于
GET dm_map_news/_search
{
"_source": "publish_time",
"query": {
"range": {
"publish_time": {
"gte": "2018-01-01 00:00:00",
"lte": "2019-01-01 00:00:00"
}
}
}
}
7. exists 和 missing 【过滤】
用来查看该字段是否存在
GET dm_map_news/_search
{
"query": {
"bool": {
"filter": {
"exists": {
"field": "title"
}
}
}
}
}
但是这里missing怎么用不会????????
8._update_by_query / _delete_by_query
8.1 _update_by_query 根据查询条件查询出来的数据,修改某些字段的内容
POST crawler_seed_response/info/_update_by_query
{
"script": {
"inline": "ctx._source.state = params.state",
"lang": "painless",
"params": {
"state": "2"
}
},
"query": {
"term": {
"entrance_id": "2460994"
}
}
}
解释:crawler_seed_response中entrance_id=2460994的数据,把state的字段内容修改为2
8.2 _delete_by_query 查询出来的数据直接删除,最好是先用 _search 测试下 查询语句对不对,防止误操作。
post
10.Task API
10.1 获取reindex的状态 GET _tasks?detailed=true&actions=*reindex
11. _reindex
将文档拷贝到新的索引下
POST _reindex
{
"source": {
"index": "news"
},
"dest": {
"index": "news_bak"
}
}
复制一个新的索引 为 news_bak
参考链接:
https://blog.csdn.net/liuxiangqian/article/details/78611316?locationNum=9&fps=1
https://es.xiaoleilu.com/index.html
https://www.cnblogs.com/softidea/p/6081285.html
elasticsearch query dsl的更多相关文章
- Elasticsearch Query DSL
Elasticsearch Query DSL By:授客 QQ:1033553122 1. match_all 1 2. match 2 3. match_phrase 5 4. match_phr ...
- Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
目录 引言 构建示例 match operator 参数 analyzer lenient 参数 Fuzziness fuzzniess 参数 什么是模糊搜索? Levenshtein Edit Di ...
- Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...
- Elasticsearch Query DSL(查询语言)
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文 ...
- Elasticsearch Query DSL备忘(1)(Constant score query和Bool Query)
Query DSL (Domain Specific Language),基于json的查询方式 1.Constant score query,常量分值查询,目的就是返回指定的score,一般都结合f ...
- Elasticsearch Query DSL查询入门
本篇为学习DSL时做的笔记,适合ES新手,大佬请略过~ Query DSL又叫查询表达式,是一种非常灵活又富有表现力的查询语言,采用JSON接口的方式实现丰富的查询,并使你的查询语句更灵活.更精确.更 ...
- Elasticsearch Query DSL 语言介绍
目录 0. 引言 1. 组合查询 2. 全文搜索 2.1 Match 2.2 Match Phase 2.3 Multi Match 2.4 Query String 2.5 Simple Query ...
- Elasticsearch Query DSL 整理总结(四)—— Multi Match Query
目录 引言 概要 fields 字段 通配符 提升字段权重 multi_match查询的类型 best_fields 类型 dis_max 分离最大化查询 best_fields 维权使者 tie_b ...
随机推荐
- 关于http请求时 安全协议问题 PKIX path building failed 解决办法
该问题的解决办法 1.在请求前需要将证书导入,不推荐 2.绕开安全协议处理 下面的代码时一段http请求并且绕开安全协议.可直接使用 /** * * @param url 需要请求的网 ...
- Linux上常用的基本命令
复制:copy [keysystem@localhost happydzy]$ cp file1 file2 [keysystem@localhost happydzy]$ ll total -rw- ...
- Nginx的基本配置案例
Nginx的基本配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx配置虚拟主机 .操作系统环境 [root@yinzhengjie ~]# cat /etc ...
- 鸟哥的Linux私房菜——第九章
视频链接,推荐看B站 土豆网:http://www.tudou.com/programs/view/XmMDbjJHJC8 B站:http://www.bilibili.com/video/av966 ...
- JDBC编程示例
package com.lovo.test; import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLE ...
- SQL记录-PLSQL异常
PL/SQL异常 程序执行过程中出现错误情况被称为在PL/SQL异常. PL/SQL支持程序员在程序中使用异常块捕获这样的条件并采取适当的动作应对错误情况.有两种类型的异常: 系统定义的异常 用户 ...
- bzoj千题计划199:bzoj1055: [HAOI2008]玩具取名
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP dp[i][j][k] 表示区间[i,j]能否合成k #include<cst ...
- centos安装lrzsz
yum -y install lrzsz 使用rz打开上传框
- Tensorflow数据读取的方式
深度学习既然是基于数据的方法,先不管多抽象,那总归是有读取数据的方法的吧,这里的数据应该是一个统称,包含我们讲的数据集和变量tensor. tf读取数据一共有3种方法: 供给数据(Feeding): ...
- java线程池的初探
问题来源 发现学习很多技术都提到了线程池的技术,自己的线程池方面没有仔细研究过,现在看了点东西来这里总结下,最近发现写博客是一个很好的锻炼自己并且将学到的东西更加理解的一个方式. 问题探究 java的 ...