码迷,mamicode.com
首页 > 其他好文 > 详细

ElasticSearch简介(二)——简单查询

时间:2019-08-10 10:07:01      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:sha   lse   too   black   text   accounts   value   超时   必须   

返回所有记录

使用 GET 方法,直接请求/Index/_search,就会返回所有记录。

GET /accounts/_search
{
????"took": 683,
????"timed_out": false,
????"_shards": {
????????"total": 1,
????????"successful": 1,
????????"skipped": 0,
????????"failed": 0
????},
????"hits": {
????????"total": {
????????????"value": 1,
????????????"relation": "eq"
????????},
????????"max_score": 1.0,
????????"hits": [
????????????{
????????????????"_index": "accounts",
????????????????"_type": "person",
????????????????"_id": "1",
????????????????"_score": 1.0,
????????????????"_source": {
????????????????????"user": "
张三",
????????????????????"title": "
工程师",
????????????????????"desc": "
数据库管理,软件开发"
????????????????}
????????????}
????????]
????}
}

上面代码中,返回结果的?took字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,hits字段表示命中的记录,里面子字段的含义如下。

  • total:返回记录数,本例是2条。
  • max_score:最高的匹配程度,本例是1.0。
  • hits:返回的记录组成的数组。

返回的记录中,每条记录都有一个_score字段,表示匹配的程序,默认是按照这个字段降序排列。

全文搜索

Elastic 的查询非常特别,使用自己的查询语法,要求 GET 请求带有数据体。

GET /accounts/_search
{
????"query": {
????????"match": {
????????????"desc": "
软件"
????????}
????}
}

上面代码使用?Match 查询,指定的匹配条件是desc字段里面包含"软件"这个词。返回结果如下。

{
????"took": 1,
????"timed_out": false,
????"_shards": {
????????"total": 1,
????????"successful": 1,
????????"skipped": 0,
????????"failed": 0
????},
????"hits": {
????????"total": {
????????????"value": 1,
????????????"relation": "eq"
????????},
????????"max_score": 0.5753642,
????????"hits": [
????????????{
????????????????"_index": "accounts",
????????????????"_type": "person",
????????????????"_id": "1",
????????????????"_score": 0.5753642,
????????????????"_source": {
????????????????????"user": "
张三
",
????????????????????"title": "
工程师",
????????????????????"desc": "
数据库管理,软件开发"
????????????????}
????????????}
????????]
????}
}

Elastic 默认一次返回10条结果,可以通过size字段改变这个设置。

GET /person/_search
{
????"query": {
????????"match": {
????????????"desc": "
管理
"
????????}
????},
????"size": 1
}

上面代码指定,每次只返回一条结果。

还可以通过from字段,指定位移。

GET /accounts/_search
{
????"query": {
????????"match": {
????????????"desc": "
管理
"
????????}
????},
????"from": 1,
????"size": 1
}

上面代码指定,从位置1开始(默认是从位置0开始),只返回一条结果。

逻辑运算

如果有多个搜索关键字, Elastic 认为它们是or关系。

GET /accounts/_search
{
????"query": {
????????"match": {
????????????"desc": "
软件 系统"
????????}
????},
????"from": 0,
????"size": 1
}

上面代码搜索的是软件 or 系统。

如果要执行多个关键词的and搜索,必须使用布尔查询

GET /accounts/_search
{
????"query": {
????????"bool": {
????????????"must": [
????????????????{
????????????????????"match_phrase": {
????????????????????????"user": "
张三"
????????????????????}
????????????????},
????????????????{
????????????????????"match": {
????????????????????????"desc": "
数据库"
????????????????????}
????????????????}
????????????]
????????}
????}
}

ElasticSearch简介(二)——简单查询

标签:sha   lse   too   black   text   accounts   value   超时   必须   

原文地址:https://www.cnblogs.com/TianFang/p/11330230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!