云搜索服务 CSS-使用OpenSearch搜索数据:步骤3:搜索数据

时间:2025-02-12 15:00:57

步骤3:搜索数据

在OpenSearch集群中对数据进行全文检索和聚合结果显示。

  • 全文检索

    假设用户进入该电商网站,想要查找名称包含“春装牛仔裤”的商品信息,可以搜索“春装牛仔裤”。

    在OpenSearch Dashboards执行如下搜索命令。

    GET /my_store/_search{  "query": {"match": {    "productName": "春装牛仔裤"  }}}

    返回结果如下所示。

    {  "took" : 3,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 4,      "relation" : "eq"    },    "max_score" : 1.7965372,    "hits" : [      {        "_index" : "my_store",        "_type" : "_doc",        "_id" : "9xf6VHIBfClt6SDjw7H5",        "_score" : 1.7965372,        "_source" : {          "productName" : "2018春装新款牛仔裤女装",          "size" : "M"        }      },      {        "_index" : "my_store",        "_type" : "_doc",        "_id" : "-Bf6VHIBfClt6SDjw7H5",        "_score" : 1.7965372,        "_source" : {          "productName" : "2018春装新款牛仔裤女装",          "size" : "S"        }      },      {        "_index" : "my_store",        "_type" : "_doc",        "_id" : "-Rf6VHIBfClt6SDjw7H5",        "_score" : 0.5945667,        "_source" : {          "productName" : "2017春装新款休闲裤女装",          "size" : "L"        }      },      {        "_index" : "my_store",        "_type" : "_doc",        "_id" : "-hf6VHIBfClt6SDjw7H5",        "_score" : 0.5945667,        "_source" : {          "productName" : "2017春装新款休闲裤女装",          "size" : "S"        }      }    ]  }}
    • OpenSearch支持IK分词,上面执行命令会将“春装牛仔裤”分词为“春装”和“牛仔裤”。
    • OpenSearch支持全文检索,上面执行命令会在所有商品信息中搜索包含“春装”或“牛仔裤”的商品信息。
    • OpenSearch与传统数据库不同,它能借助倒排索引在毫秒级返回结果。
    • OpenSearch支持评分排序,在上面返回结果中,前两条商品信息中同时出现了“春装”和“牛仔裤”,后两条商品信息中只出现了“春装”,所以前两条比后两条与检索关键词的匹配度更高,分数更高,排序也更靠前。
  • 聚合结果显示

    该电商网站可以提供聚合结果显示功能,例如: 对“春装”对应的产品按照尺码分类,统计不同尺码的数量。

    在OpenSearch Dashboards执行如下聚合结果命令。

    GET /my_store/_search{"query": {"match": { "productName": "春装" }},"size": 0,"aggs": {"sizes": {"terms": { "field": "size" }}}}

    返回结果如下所示。

    {  "took" : 3,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 4,      "relation" : "eq"    },    "max_score" : null,    "hits" : [ ]  },  "aggregations" : {    "sizes" : {      "doc_count_error_upper_bound" : 0,      "sum_other_doc_count" : 0,      "buckets" : [        {          "key" : "S",          "doc_count" : 2        },        {          "key" : "L",          "doc_count" : 1        },        {          "key" : "M",          "doc_count" : 1        }      ]    }  }}
support.huaweicloud.com/qs-css/css_08_0003.html