ElasticSearch的几种检索方式 您所在的位置:网站首页 常见检索方式有哪些 ElasticSearch的几种检索方式

ElasticSearch的几种检索方式

2024-07-10 22:16| 来源: 网络整理| 查看: 265

主要分为以下几种:

1、query string search :查询字符串搜索 2、query DSL :特定领域的语言 3、query filter : 过滤查询 4、full-text search :(全文检索) 5、phrase search :(短语搜索) 6、highlight search :(高亮搜索)

有那些不懂的可以查看《Elasticsearch 权威指南》:https://www.elastic.co/guide/cn/elasticsearch/guide/current/term-vs-full-text.html

搜索全部数据

http://localhost:9200/_search

took:耗费了几毫秒 timed_out:是否超时,这里是没有 _shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以) hits.total:查询结果的数量,3个document hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高 hits.hits:包含了匹配搜索的document的详细数据

查询索引下面的所有数据

http://localhost:9200/articleindex/_search

 

1.query string search的由来是因为,因为search参数都是以http请求query string 来附带参数的

比如搜索商品名称包含“欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士”

http://localhost:9200/goods/goodslist/_search?q=name:欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男

 

2、query DSL :Domain Specified Language,特定领域的语言

http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比起第一种还是强大很多。

比如查询所有商品:

http://localhost:9200/goods/goodslist/_search

"query": { "match_all": {} }   //查询所有

body:

{     "query":{         "match":{             "name":"欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士"         }     },     "sort": [         { "price": "desc" }              ] }

返回的查询信息如下:

分页查询:总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品

{   "query": { "match_all": {} },   "from": 1,   "size": 1 }

查询显示商品名字和价格字段数据:

{     "query":{         "match_all":{}     },     "_source":["name","price"] }

 

3.query filter

搜索商品等于欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士 并且价格大于50元的商品

“bool”:代表布尔查询:https://www.cnblogs.com/xing901022/p/5994210.html 详解

postman只能post可以写body;

http://localhost:9200/goods/goodslist/_search

body:

{     "query":{         "bool":{             "must":{                 "match":{                     "name":"欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士"                 }             },             "filter":{                 "range":{                     "price":{"gt":"50"}                 }             }         }     } }

在这里写下自己的理解must:它由一个或者多个子句组成,每个子句都有特定的类型。字句中的条件必须满足,

返回的文档必须满足must子句的条件,并且参与计算分值。

 

4、full-text search(全文检索)

http://localhost:9200/goods/goodslist/_search

body:

{     "query" : {         "match" : {             "name" : "欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士"         }     } }

name:这个里面的搜索项会被拆开一个一个的去倒排索引里卖弄一一匹配,只要能匹配上任意一个拆解后的单词就可以作为搜索结果返回。

5、phrase search(短语搜索)

跟全文检索相对应, phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

http://localhost:9200/goods/goodslist/_search {     "query" : {         "match_phrase" : {             "name" : "欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士"         }     } }

只有一条是匹配的。

 

 

6、highlight search(高亮搜索结果)

http://localhost:9200/goods/goodslist/_search

{     "query" : {         "match" : {             "name" : "欧尼杰夏季修身休闲裤男运动休闲简约薄款长裤男士"         }     },     "highlight": {         "fields" : {             "name" : {}         }     } }

 

*局部跟新

例子:

PUT http://localhost:9200/test_index/test_type/10 {   "test_field1": "test1",   "test_field2": "test2" }

POST http://localhost:9200/test_index/test_type/10/_update {   "doc": {     "test_field2": "updated test2"   } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有