请选择 进入手机版 | 继续访问电脑版

11 搜索之url搜索

[复制链接]
茂忠想你 发表于 2021-1-2 17:37:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次



1 准备数据


  • 构建个文章的索引
  1. PUT article{  "mappings": {    "properties": {      "id":{        "type": "long"      },      "title":{        "type": "text",        "analyzer": "ik_max_word"      },      "category":{        "type": "keyword"      },      "author":{        "type": "text",        "analyzer": "ik_max_word"      },      "content":{        "type": "text",         "analyzer": "ik_max_word"      },      "createAt":{        "type": "date",        "format": ["yyyy-MM-dd hh:mm:ss"]      }    }  }}
复制代码

  • 先插入一条数据,反面根据测试的需要举行增加
  1. PUT article/_doc/1{  "id":1,  "title":"elasticsearch技能分析与实战",  "category":"盘算机技能",  "author":"朱林",  "content":"elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",  "createAt":"2016-12-12 10:00:00"}
复制代码

  • 根据id查询一下数据
  请求
  1. GET article/_doc/1
复制代码
  响应
  1. {  "_index" : "article",  "_type" : "_doc",  "_id" : "1",  "_version" : 1,  "_seq_no" : 0,  "_primary_term" : 1,  "found" : true,  "_source" : {    "id" : 1,    "title" : "elasticsearch技能分析与实战",    "category" : "盘算机技能",    "author" : "朱林",    "content" : "elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",    "createAt" : "2016-12-12 10:00:00"  }}
复制代码
2 url搜索

请求格式:
GET http"//localhost:9200/索引库名字/_search?参数,多个参数使用&符号分开。
参数一:q:查询字符串

  可以指定查询字段,如果不指定,es 会查询所有字段
比方:
  1. # 查询id为1的文档GET article/_search?q=id:1# 查询author为朱林的GET article/_search?q=author:朱林# 查询author包罗朱GET article/_search?q=author:朱# 查询类目为盘算机技能GET article/_search?q=category:盘算机技能GET article/_search?q=category:盘算机
复制代码
除了最后一个查不出刚刚数据:
  1. {  "took" : 0,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 0,      "relation" : "eq"    },    "max_score" : null,    "hits" : [ ]  }}
复制代码
很简单的类目字段为keyword,不会被分词,所以类目查询盘算机是会被搜索出来的,而作者字段范例是text,会被分词,所以查询朱照旧林又大概是朱林都能被索引出来。
之前讲过的source过滤,超市时间也是可以的
  1. # 只返回title和author字段,超时时间为5mGET article/_search?q=category:盘算机技能&_source_includes=title,author&timeout=5m
复制代码
  1. {  "took" : 2,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 0.2876821,    "hits" : [      {        "_index" : "article",        "_type" : "_doc",        "_id" : "1",        "_score" : 0.2876821,        "_source" : {          "author" : "朱林",          "title" : "elasticsearch技能分析与实战"        }      }    ]  }}
复制代码
固然也可以不指定字段,这就是查询所有字段
  1. GET article/_search?q=朱林
复制代码
新增一条数据
  1. PUT article/_doc/2{  "id":2,  "title":"朱林传记",  "category":"传记",  "author":"王小虎",  "content":"资深开辟人员,有16年开辟履历,11年安全产物开辟履历,对安全技能、日志分析有较深的研究。于2013年建立南京赛克蓝德网络科技有限公司,公司专注于安全产物的开辟,现在主要开辟的产物是赛克蓝德日志分析软件。",  "createAt":"2016-12-12 10:00:00"}
复制代码
执行上面的查询,就会把两条数据都搜索出来
  1. {  "took" : 632,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 2,      "relation" : "eq"    },    "max_score" : 1.5442266,    "hits" : [      {        "_index" : "article",        "_type" : "_doc",        "_id" : "2",        "_score" : 1.5442266,        "_source" : {          "id" : 2,          "title" : "朱林传记",          "category" : "传记",          "author" : "王小虎",          "content" : "资深开辟人员,有16年开辟履历,11年安全产物开辟履历,对安全技能、日志分析有较深的研究。于2013年建立南京赛克蓝德网络科技有限公司,公司专注于安全产物的开辟,现在主要开辟的产物是赛克蓝德日志分析软件。",          "createAt" : "2016-12-12 10:00:00"        }      },      {        "_index" : "article",        "_type" : "_doc",        "_id" : "1",        "_score" : 1.3862942,        "_source" : {          "id" : 1,          "title" : "elasticsearch技能分析与实战",          "category" : "盘算机技能",          "author" : "朱林",          "content" : "elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",          "createAt" : "2016-12-12 10:00:00"        }      }    ]  }}
复制代码
执行下面的查询就只会查出一条数据:author是朱林的那条
  1. GET article/_search?q=author:朱林
复制代码
  1. {  "took" : 1,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 1.3862942,    "hits" : [      {        "_index" : "article",        "_type" : "_doc",        "_id" : "1",        "_score" : 1.3862942,        "_source" : {          "id" : 1,          "title" : "elasticsearch技能分析与实战",          "category" : "盘算机技能",          "author" : "朱林",          "content" : "elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",          "createAt" : "2016-12-12 10:00:00"        }      }    ]  }}
复制代码
参数2:df

界说查询时,默认的查询字段
  1. GET article/_search?q=朱林&df=author
复制代码
这里就指定了默认查询字段是author,刚刚上面没有指定,会查询出两条数据,这里指定了就只会去查询author字段,只会查询:
  1. {  "took" : 2,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 1.3862942,    "hits" : [      {        "_index" : "article",        "_type" : "_doc",        "_id" : "1",        "_score" : 1.3862942,        "_source" : {          "id" : 1,          "title" : "elasticsearch技能分析与实战",          "category" : "盘算机技能",          "author" : "朱林",          "content" : "elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",          "createAt" : "2016-12-12 10:00:00"        }      }    ]  }}
复制代码
参数3 timeout

搜索超时,将搜索请求限制在指定的时间值内执行,并使用在到期时累积的点击数举行保释。默认为无超时。
参数 sort

排序执行。可以是fieldName或 fieldName:asc / fieldName:desc。fieldName可以是文档中的实际字段,也可以是特殊_score名称,表现基于分数的排序。可以有几个sort参数(顺序很重要)。
  1. # 根据id降序GET article/_search?sort=id:desc# 也可以是_score这种特殊字段GET article/_search?sort=_score:desc
复制代码
设置了排序字段就不会返回评分信息了(除了按照_score排序之外)

参数 track_scores

通过这个参数就可以,在使用其他排序字段的时候,依旧返回得分情况,默认是false
  1. GET article/_search?sort=id:desc&track_scores=true
复制代码

参数 _source

设置为false禁用_source字段检索。您还可以使用_source_include&检索部分文档_source_exclude,默认是true
这个前面已经先容过:https://blog.csdn.net/wyaoyao93/article/details/110325063
  1. GET article/_search?q=category:盘算机技能&_source_includes=title,author
复制代码
参数 track_total_hits

设置为false禁用跟踪与查询匹配的匹配总数。默认为true。
设置为false,不会返回匹配的总条数,total字段返回值为-1
简单来说就是返回查询到的总数
  1. GET article/_search?track_total_hits=false
复制代码
参数 search_type

要执行的搜索操纵的范例。可以是 dfs_query_then_fetch或query_then_fetch。默认为query_then_fetch。有关可以执行的差别搜索范例的更多详细信息,请参阅 搜索范例。
参数 explain

每个返回效果中,将包罗评分机制的表明,默认是false
  1. GET article/_search?explain=true
复制代码
参数 terminate_after: 每个分片中查询的最大条数

每个分片中查询的最大条数,如果设置了,返回效果中会有一个terminated_early字段
  1. GET article/_search?terminate_after=1
复制代码
  1. {  "took" : 0,  "timed_out" : false,  "terminated_early" : true,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 1.0,    "hits" : [      {        "_index" : "article",        "_type" : "_doc",        "_id" : "1",        "_score" : 1.0,        "_source" : {          "id" : 1,          "title" : "elasticsearch技能分析与实战",          "category" : "盘算机技能",          "author" : "朱林",          "content" : "elasticsearch是现在全球最受欢迎的全文搜索引擎技能。本书将首先先容其相关的根本知识,然后由浅入深的先容其索引查询相关的知识,接着先容其集群,分词等重要的设置,最后先容其相关的其他产物。",          "createAt" : "2016-12-12 10:00:00"        }      }    ]  }}
复制代码
这里只查出一条,因为我们就一个分片,每个分片最大返回1条,所以只返回了一条数据
分页: from和size

from:索引匹配效果的偏移值,默认是0
size:默认是10,搜索效果返回的条数
  1. # 查询第一页,每页1条GET article/_search?from=0&size=1# 查询第二页,每页1条GET article/_search?from=1&size=1
复制代码
来源:https://blog.csdn.net/wyaoyao93/article/details/111998227
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )