ElasticSearch简介——简单查询

Posted tianfang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch简介——简单查询相关的知识,希望对你有一定的参考价值。

返回所有记录

使用 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简介——简单查询的主要内容,如果未能解决你的问题,请参考以下文章

自己动手制作elasticsearch-head的Docker镜像

ELK在广告系统监控中的应用 及 Elasticsearch简介

使用模糊 NEST 进行多匹配查询 - ElasticSearch

如何使用 ElasticSearch-Rails 查询 dsl 返回相关关系

CentOS上安装elasticsearch

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮