标签: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字段表示命中的记录,里面子字段的含义如下。
返回的记录中,每条记录都有一个_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": "数据库"
????????????????????}
????????????????}
????????????]
????????}
????}
}
标签:sha lse too black text accounts value 超时 必须
原文地址:https://www.cnblogs.com/TianFang/p/11330230.html