欢迎访问www.allbetgaming.com!

首页科技正文

us apple developer accounts for sale:Elasticsearch从入门到放弃:再聊搜索

admin2020-08-0276

在前文中我们曾经聊过搜索文档的方式,Elasticsearch 一样平常适用于读多写少的场景,因此我们需要更多的关注读操作。

Elasticsearch 提供的 Search API 可以分为 URI Search 和 Request Body Search 两大类。从名称上可以直观的看出,URI Search 是使用URI的参数通报参数给 Elasticsearch,Request Body Search 则是将参数放到 Body 中举行通报,下面我们详细来看一下。

URI Search

首先我们来看 URI Search 的一些参数。

  • q 指定查询语句,其使用的是 Query String Syntax
  • df 指定默认字段,若是不指定,则会查询所有字段
  • Sort 对哪些字段举行排序
  • from/size 用于分页

此外,我们还可以通过在请求体中指定 profile 参数来查看查询是若何被执行的。

你可以在Kibana中执行下面的查询来看一下 Elasticsearch 的查询是怎样执行的。

GET /movies/_search?q=2012
{
  "profile": "true"
}

GET /movies/_search?q=title:2012
{
  "profile": "true"
}

GET /movies/_search?q=2012&df=title
{
  "profile": "true"
}

在上面这组查询中,当我们指定了查询字段时, Elasticsearch 使用的 query type 是Term Query。

与之对应的另有 Phrase Query。

Term

若是我们的查询条件是 title:(Code Review),那么它使用的就是 Term Query,它等价于查询 title 中存在 Code 或 Review 的文档。

Phrase

若是我们的查询条件是title:"Code Review"这样用引号引起来的,那么它使用的就是 Phrase Query,它等价于查询同时存在 Code 和 Review 的文档,而且 Code 泛起的顺序必须在 Review 之前。

这里你可能会有疑问,为什么 Term Query 前后需要加括号,这是 Elasticsearch 中的分组观点,若是想要像我们说的那样,在 titile 字段中查找存在 Code 或 Review 的文档,那么就必须把它们作为一个分组举行查询。这里你可以自己着手试一下不加括号的情形,看一下 Elasticsearch 会若何执行。

Term Query 中还提供了许多种查询语法,例如我们可以只用 AND、OR、NOT 这样的字符举行布尔操作(需要注重它们都必须大写),也可以使用加号或减号示意 must 和 must not 的观点。同时区间、通配符、甚至是正则表达式查询。

Request Body Search

先容完 URI Search,我们再一起学习一下 Request Body Search,其实在 Elasticsearch 中,Request Body Search 是加倍常用的查询方式。由于它能够支持更多高阶的使用方式。

在 Request Body Search 中,我们同样是用 fromsize 来举行分页,默认的是从0最先,返回10个效果。

排序的方式也是使用 sort,一样平常建议在“数字型”或“日期型”字段上举行排序。

对于一些字段对照多的文档,我们并不是每次查询都需要所有的字段,这时候就可以在 body 中加上 _source 字段来举行过滤。_source字段可以支持通配符,例如_source:["name*"],查询中就只会返回字段名是 name 开头的字段。

前面我们聊了 Term Query 和 Phrase Query,在 Request Body Search 中,我们使用 Match Query 来举行类似的操作。

GET /movies/_search
{
  "query": {
    "match": {
      "title": "Lord Rings"
    }
  }
}

在这个例子中,Elasticsearch 会帮我们查询的是 title 中有 Lord 或 Rings 的文档,若是想要查询 Lord 和 Rings,我们需要用到 operator 来举行修改。

GET /movies/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Lord Rings",
        "operator": "and"
      }
    }
  },
  "profile": "true"
}

若是要使用 Phrase 查询,只需要把上面的 match 替换为 match_phrase 即可。

在 Phrase 查询中,可以使用 slot 参数来指定可以插入在中心的单词数目。

GET /movies/_search
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "Lord Rings",
        "slop": 2
      }
    }
  },
  "profile": "true"
}

总结

本文我们学习了 Elasticsearch 的两种查询方式:URI Search 和 Request Body Search 。这里加倍推荐使用 Request Body Search,由于它可以支持许多高阶用法,这里我们只先容了一些对照常用的查询方式,包罗 Term Query 和 Phrase Query,也先容了一些字段的用法,包罗分页、排序、过滤字段等。固然,Elasticsearch 的 Request Body Search 还支持许多其他参数,由于篇幅限制,就不再一一先容了,人人在使用时可以自行查阅官方文档。

最后多说一句,关于 Elasticsearch,我也是刚刚接触,迎接志同道合的同砚一起交流。

,

Us apple developer accounts for sale

Appledeveloper.io is a reputed website selling apple developer account, providing us, China and worldwide developer individual accounts for sale. It's at low price and good quality. Always provides satisfying services!

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

本文链接:https://www.jswx10086.com/post/978.html

网友评论

1条评论
  • 2020-08-02 00:17:20

    欧博手机版下载欢迎进入欧博手机版下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。沉迷此文无法自拔

最新评论

  • UG环球 10/29 说:

    Us apple developer accounts for saleAppledeveloper.io is a reputed website selling apple developer account, providing us, China and worldwide developer individual accounts for sale. It's at low price and good quality. Always provides satisfying services!下笔如有神

  • UG环球 10/29 说:

    Us apple developer accounts for saleAppledeveloper.io is a reputed website selling apple developer account, providing us, China and worldwide developer individual accounts for sale. It's at low price and good quality. Always provides satisfying services!下笔如有神

  • UG环球手机版下载 10/29 说:

    Allbet Gmaing开户欢迎进入Allbet Gmaing开户(www.aLLbetgame.us):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。来学文笔了

  • 环球UG官方注册 10/28 说:

    欧博开户欢迎进入欧博开户平台(Allbet Game):www.aLLbetgame.us,欧博开户平台开放欧博Allbet开户、欧博Allbet代理开户、欧博Allbet电脑客户端、欧博AllbetAPP下载等业务。还可以吧,挺用心

  • allbet登陆官网 10/27 说:

    欧博电脑版下载欢迎进入博电脑版下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。好啊,很独特的语言

  • allbet登陆网址 10/27 说:

    Allbet注册欢迎进入Allbet注册(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。文笔特别柔软

  • 联博以太坊 10/26 说:

    欧博亚洲APP下载欢迎进入欧博亚洲APP下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。让人羡慕啊

  • UG环球网址 10/26 说:

    欧博allbet客户端欢迎进入欧博allbet客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。好看,特别精致的文