首页 > 其他分享 >助你掌握搜索神器,10个实用的Elasticsearch查询技巧

助你掌握搜索神器,10个实用的Elasticsearch查询技巧

时间:2023-04-19 22:02:16浏览次数:35  
标签:10 匹配 title 词语 神器 字段 Elasticsearch 某个 query

前言

  Elasticsearch是一个非常流行的搜索引擎,已经成为了许多企业的首选解决方案。然而,我们要想成为一个优秀的程序员,就必须掌握各种查询技巧。本文将向大家介绍10个实用的Elasticsearch查询技巧,并配上详细的代码示例,帮助我们更好地掌握Elasticsearch的查询语法。

示例

1. 匹配多个词语:

使用 bool 查询和 must 子句可以匹配多个词语。例如,匹配同时包含“apple”和“banana”的文档:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "text": "apple" }},
        { "match": { "text": "banana" }}
      ]
    }
  }
}

2. 匹配某个字段中的任意一个词:

使用 terms 查询和字段名可以匹配某个字段中的任意一个词。例如,匹配 title 字段中包含“apple”或“banana”的文档:

{
  "query": {
    "terms": {
      "title": ["apple", "banana"]
    }
  }
}

3. 匹配某个字段中的词语前缀:

使用 prefix 查询和字段名可以匹配某个字段中的词语前缀。例如,匹配 title 字段中以“app”开头的文档:

{
  "query": {
    "prefix": {
      "title": "app"
    }
  }
}

4. 匹配某个字段中的词语通配符:

使用 wildcard 查询和字段名可以匹配某个字段中的词语通配符。例如,匹配 title 字段中包含“app”或“ban”的文档:

{
  "query": {
    "wildcard": {
      "title": "*app* OR ban*"
    }
  }
}

5. 匹配某个字段中的词语模糊匹配:

使用 fuzzy 查询和字段名可以进行词语模糊匹配。例如,匹配 title 字段中类似于“aple”的文档:

{
  "query": {
    "fuzzy": {
      "title": "aple"
    }
  }
}

6. 匹配某个字段中的词语范围:

使用 range 查询和字段名可以匹配某个字段中的词语范围。例如,匹配 price 字段在 10 到 100 之间的文档:

{
  "query": {
    "range": {
      "price": {
        "gte": 10,
        "lte": 100
      }
    }
  }
}

7. 匹配某个字段中的词语存在与否:

使用 exists 查询和字段名可以匹配某个字段中的词语是否存在。例如,匹配包含 description 字段的文档:

{
  "query": {
    "exists": {
      "field": "description"
    }
  }
}

8. 按照某个字段排序:

使用 sort 参数可以按照某个字段进行排序。例如,按照 score 字段从高到低排序:

{
  "query": {
    "match_all": {}
  },
  "sort": [
    { "score": "desc" }
  ]
}

9. 返回某些字段的部分数据:

使用_source 参数可以返回某些字段的部分数据。例如,只返回 title 和 price 字段的数据:

{
  "query": {
    "match_all": {}
  },
  "_source": ["title", "price"]
}

10. 进行分页操作:

使用 from 和 size 参数可以进行分页操作。例如,返回第 11-20 条数据:

{
  "query": {
    "match_all": {}
  },
  "from": 10,
  "size": 10
}

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

标签:10,匹配,title,词语,神器,字段,Elasticsearch,某个,query
From: https://blog.51cto.com/u_11446735/6207497

相关文章

  • P1067 [NOIP2009 普及组] 多项式输出
    #[NOIP2009普及组]多项式输出##题目描述一元$n$次多项式可用如下的表达式表示:$$f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0,a_n\ne0$$其中,$a_ix^i$称为$i$次项,$a_i$称为$i$次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项......
  • 麒麟V10安装s3cmd工具
    操作系统:KylinV10环境:python2/3都有,但无pip模块需求:安装s3cmd工具,当前版本2.3.0问题:下载s3cmd-2.3.0.tar.gz计划编译安装。提前了解到依赖python-dateutil的包,用麒麟的文件yum源安装之但编译安装结束提示没有python-magic包。找厂商要了pip3的rpm包先装上(文件yu......
  • 程序员面试金典---10
    三步问题思路:通过题意很明显就是动态规划问题,而且本问题很简单(是两步楼梯的进阶版),构造动态转换方程为:\[dp[i]=d[i-1]+dp[i-2]+dp[i-3]\]解释一下:在第i层楼梯,到达这一层的方式可以从第i-1层上来,也可以在i-2层上来,也可以从i-3上来,因此相加即可。初始状态:dp[0]=0,dp[1]=1,......
  • 力扣---1043. 分隔数组以得到最大和
     给你一个整数数组arr,请你将该数组分隔为长度最多为k的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。返回将数组分隔变换后能够得到的元素最大和。本题所用到的测试用例会确保答案是一个32位整数。 示例1:输入:arr=[1,15,7,9,2......
  • GYM104081 部分题解
    比赛链接:https://codeforces.com/gym/104081目前就做了8题,里面还有4个水题……水题:ACEG,模拟题意即可,C和E有一些细节。不想写题解了F首先目标是如何将这9个数分组,由于答案一定存在,考虑随机化,固定\(a_1\inS_1\),然后随机一个\(a_i\inS_1\),异或得到\(S_1\)的另一......
  • 力扣---1071. 字符串的最大公因子
    对于字符串s和t,只有在s=t+...+t(t自身连接1次或多次)时,我们才认定“t能除尽s”。给定两个字符串str1和str2。返回最长字符串x,要求满足x能除尽str1且X能除尽str2。示例1:输入:str1="ABCABC",str2="ABC"输出:"ABC"示例2:输入:str1="ABABAB",str2=......
  • How Many O's? UVA - 11038
    写下区间[a,b]的所有数 ,问一共有多少个0 #include<iostream>#include<cstring>#include<vector>usingnamespacestd;#defineintlonglongintn,f[40][40][2][2];vector<int>a;intdfs(intx,intcnt0,intflg,intlead){ if(x<0){ i......
  • 电解电容标注的 100WV 是什么意思?
    电解电容标注的100WV是什么意思?如上显示,一般显示100V,但是这个电解电容却是标注为100WV。这是什么意思呢?100万V?错!大错特错。WV是电解电容器标注电压的单位,它表示电容器的额定电压值。在电子电路中,电容器的额定电压是非常重要的参数,因为它决定了电容可以承受的最大电压值。......
  • 关1-100之间9的问题
    大叫好,二八承平再次上线,在这里分享一个今天学习的新知识。问题的出发是输出1-100之间有多少个九,我花费一个多小时自己琢磨,网上查找资料终于解决这个问题。收获到了知识的甜味!我冒出一个问题?我该怎么输出1-100中含9的数字呢?大家也可以想一想。欲望激励的我,我经过漫长的反复敲打,终于......
  • Windows 10开发教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Windows10开发入门教程-从简单的步骤了解Windows10开发,从基本到高级概念,包括简介,UWP,第一个应用程序,商店,XAML控件,数据绑定,XAML性能,自适应设计,自适应UI,自适应代码,文件管理,SQLite数据库,应用程序到应用程序通信,应用程序本地化,应用程序生命周期,后台执行,应用服务,Web平台,连接......