Elasticsearch的使用之应用-标签搜索

业务场景

商品包含多个标签,
如 “一种焦炉荒煤气余热回收系统及回收方法” 标签为“资源与环境 焦炉荒煤气 余热回收 焦炉 上升管”

(1)当搜索条件为“热电阻 三线制 计算机” 能够匹配到,使用 should
(2)当搜索条件为“热电阻 三线制 计算机” 不能够匹配到,使用must

创建索引

关键

"tag" : {
          "type" :   "text",
		  "analyzer": "whitespace"
        }

使用whitespace分析器,按空格不分词

PUT http://172.16.21.34:9200/kjt
{
  "mappings": {
    "patent" : {
      "properties" : {
        "id" : {
          "type" :    "text"
        },
        "title" : {
          "type" :   "text"
        },
        "tag" : {
          "type" :   "text",
		  "analyzer": "whitespace"
        }
      }
    }
  }
}

新增数据

PUT http://172.16.21.34:9200/kjt/patent
{
"id":"201901600045653788",
"title":"一种焦炉荒煤气余热回收系统及回收方法",
"tag":"资源与环境 焦炉荒煤气 余热回收 焦炉 上升管"
}

{
"id":"201901600045653800",
"title":"基于计算机硬盘分区的数据备份和恢复方法",
"tag":"电子信息 信息安全技术 数据备份 计算机安全 分区"
}

{
"id":"201901600045653794",
"title":"一种能实现测温校正的热电阻补偿电路",
"tag":"热电阻 补偿电路 测温校正 三线制"
}

{
"id":"201901600045653830",
"title":"一种拖运轧辊用牵引车",
"tag":"先进制造与自动化 汽车及轨道车辆相关技术 拖运 轧辊 牵引车"
}

查看所有数据

POST http://172.16.21.34:9200/kjt/patent/_search

搜索测试

POST http://172.16.21.34:9200/kjt/patent/_search

{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "tag": "热电阻"
          }
        },
        {
          "term": {
            "tag": "三线制"
          }
        },
         {
          "term": {
            "tag": "孩子"
          }
        }
      ]
    }
  }
}

得到的结果

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1.4523084,
        "hits": [
            {
                "_index": "kjt",
                "_type": "patent",
                "_id": "hjwUq20BNJXFMOw6tIG5",
                "_score": 1.4523084,
                "_source": {
                    "id": "201901600045653794",
                    "title": "一种能实现测温校正的热电阻补偿电路",
                    "tag": "热电阻 补偿电路 测温校正 三线制"
                }
            }
        ]
    }
}

使用 must 是匹配不到的
为了能够多返回信息,添加类似的数据,测试

{
"id":"201901600045653714",
"title":"热电阻研究技术",
"tag":"热电阻 技术研究 软件 大数据 三线制"
}

添加条件后

{
“term”: {
“tag”: “补偿电路”
}
}

再次搜索
Elasticsearch的使用之应用-标签搜索_第1张图片
由此可实现 按照相关排序,完成匹配。

目前使用ES主要使用上面的功能,其他优化暂无,重点在于如何将标签打好,以及将用户输入计算出合理的标签作为查询条件。
要熟悉ES的知识点:
(1)如何创建索引,类型和字段
(2)设置映射
(3)分析器的使用
(4)搜索语句
(5)must和should的区别

打分策略

由于业务原因,需要能看到打分策略

ES的打分策略
博客参考ElasticSearch 使用教程之_score(评分)介绍

添加

"explain": true, 

可以展示打分过程

你可能感兴趣的:(ES,标签,大数据,大数据,搜索)