Elasticsearch Reference [6.2] » Query DSL

参考官方文档 :https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

一、组合查询 Compound queries

  1. Constant Score Query 指定_score分数查询
GET /_search
{
"query": {
"constant_score" : {
"filter" : {
"term" : { "user" : "kimchy"}
},
"boost" : 1.2
}
}
}
  1. Bool Query 布尔值查询

must:查询的条件必须在匹配的文档中,并计算相似度得分

filter:必须满足条件,不会计算相似度得分

should:满足子条件的一个或者多个,满足的格式可以通过"minimum_should_match" : 1设置,类似 OR (如果查询中包filter则至少满足一个should)

must_not:返回的文档必须不满足条件,类似 NOT

tips : 日期格式在添加文档和搜索的时候加上T,字符串不区分大小写 如pek

GET /stu/_search
{
"query": {
"bool": {
"must": [
{ "match": { "address":"上海市 保德路 闸北区"}}
],
"filter": [
{"term":{ "id": 11 }},
{"term":{ "city": "pek" }},
{"range":{"regdate": {"gte": "2018-03-03T15:33:32","lte":"2018-03-03T15:33:33"}}}
],
"should":[
{"term":{ "score": 80.8 }},
{"term":{ "score": 80.0 }}
],
"must_not":[{
"term" : { "age" : 30 }
}],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}

二、查询上下文

Query Context:文档和查询条件的匹配度,出了决定是否与文档匹配外,还会计算查询条件和文档的匹配度_score

GET /_search
{
"query" : {
"term" : { "user" : "kimchy" }
}
}

三、过滤上下文

Filter context: 精确搜索文档和查询是否匹配,不会去计算匹配度,主要用于过滤结构化数据.

经常使用的过滤器会被elasticsearch自动缓存,以提高查询效率

示例:title中包含search、content中包含elasticsearch 且 status="published" & publish_date >="2015-01-01"

filter里的term、range

GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search"}},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}

四、查询所有

查询所有_score的文档,(注:boost的默认值是 1.0)

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

查询_score=1.2的所有文档

GET /_search
{
"query": {
"match_all": { "boost" : 1.2 }
}
}

五、全文查询

1.match query

query:查询字段message中包含 " this is test " , 注意 "to be or not to be" 属于停顿词,过滤器默认会把remove调,设置zero_terms_query:"all"启用

另operator/zero_terms_query非必填参数,更详细内容查看match query官方文档

GET /_search
{
"query": {
"match" : {
"message" : {
"query" : "to be or not to be,this is test",
"operator" : "and",
"zero_terms_query": "all"
}
}
}
}

2.Match Phrase Query

match_phrase从分析文本"this is a test"中创建一组词去查询,analyzer分词器也可以使用ik等中文分词器

GET /_search
{
"query": {
"match_phrase" : {
"message" : {
"query" : "this is a test",
"analyzer" : "standard"
}
}
}
}

3.Match Phrase Prefix Query

match_phrase_prefix与match_phrase类似,只是它允许在文本中的最后一个词的前缀匹配

GET /_search
{
"query": {
"match_phrase_prefix" : {
"message" : "quick brown f"
}
}
}

4.Multi Match Query

multi_match匹配查询上以允许多字段查询(subject/message字段):

GET /_search
{
"query": {
"multi_match" : {
"query": "this is a test",
"fields": [ "subject", "message" ]
}
}
}

5.Common Terms Query

common:停顿词配置相关如 " the to be "等

6.Query String Query

query_string:没理解看官方文档

7.Simple Query String Query

simple_query_string: 与query_string查询不同的是,simple_query_string查询永远不会抛出异常,并放弃查询的无效部分

GET /_search
{
"query": {
"simple_query_string" : {
"query": "\"fried eggs\" +(eggplant | potato) -frittata",
"fields": ["title^5", "body"],
"default_operator": "and"
}
}
}

elasticsearch入门使用(三) Query DSL的更多相关文章

  1. Elasticsearch入门教程(三):Elasticsearch索引&映射

    原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...

  2. ElasticSearch入门 第三篇:索引

    这是ElasticSearch 2.4 版本系列的第三篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  3. ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套

    这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  4. ElasticSearch入门 第九篇:实现正则表达式查询的思路

    这是ElasticSearch 2.4 版本系列的第九篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  5. ElasticSearch入门 第五篇:使用C#查询文档

    这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  6. ElasticSearch查询 第三篇:词条查询

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

  7. ElasticSearch入门 第四篇:使用C#添加和更新文档

    这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  8. ElasticSearch入门点滴

    这是Elasticsearch-6.2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ...

  9. ElasticSearch入门 第二篇:集群配置

    这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

随机推荐

  1. 系统学习爬虫_2_urllib

    什么是urllib urlopen urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cad ...

  2. SC || 关于java迭代中修改迭代集合的操作

    在通过for循环遍历整个List/Map等的时候,如果想要进行remove的操作,这时就更改了迭代集合,会出现错误 一种方法是如果只会remove一个可以remove后直接break 另一种是把集合先 ...

  3. JS添加验证页面中script标签中是否存在jquery文件

    window.onload = function() { var al = document.getElementsByTagName("script"); var new_ele ...

  4. 初涉倍增&&LCA【在更】

    一种特殊的枚举算法 什么是倍增 顾名思义,即每一次翻倍增加.那么,这样我们就有了一种$O(logn)$阶的方法处理枚举方面的问题了. 参考:[白话系列]倍增算法 一些题目 [倍增]luoguP1613 ...

  5. [LUOGU] P1063 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  6. GIMP矩形选框预圆形选框

    矩形选框,四种框选模式,了解一下 Repalace the current selector Add to the current selection (shift键) Subtract from t ...

  7. Centos7.2 上部署 FastDFS_V5.05

    1.安装gcc (编译时需要) [root@localhost~]# yum -y install gcc gcc-c++ 2.安装libevent ,FastDFS依赖libevent库; [roo ...

  8. 【php】Windows PHP及xdebug安装 安装

    php version 7.0 redis 下载地址 https://pecl.php.net/package/redis 7.0版本的redis不再依赖php_igbinary.dll扩展,可以独立 ...

  9. iOS使用Reveal分析他人app界面

    本文转自http://blog.csdn.net/cuibo1123/article/details/45694657 安装: 首先前往 http://revealapp.com/download/  ...

  10. 如何在JS中应用正则表达式

    背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: $("#zhengze").click(function () { var ...