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