统计图书clcs字段中'建筑科学'出现的次数

需要解决的问题:

  1. 当搜索内容为工程时,统计出books表中clcs字段为不同值的个数是多少
  2. 当搜索内容为工程时,查找出books表中clcs字段值为建筑科学的文档

针对问题1我的语句如下,

GET /engineer/books/_search
{
  "size":0,
  "query":{
    "multi_match": {
      "query": "工程",
      "fields": ["summary","isbn","series","keywords","bindingFormat","standardNo","editor","chiefEditor","publisher","name","clcs","sublibs"]
    }
  },
  "aggs":{
    "data":{
      "terms": {
        "field": "clcs.keyword"
      }
    }
  }
}

搜索的结果如下:
图片描述

统计出的clcs字段为建筑科学的个数是139个
针对问题2我的解决方案是:

GET engineer/books/_search
{
  "query":{
    "bool":{
      "should":{
        "multi_match":{
     "query":"  工程",
     "fields": ["summary","isbn","series","keywords","bindingFormat","standardNo","editor","chiefEditor","publisher","name","clcs","sublibs"],
     "type":"phrase"
      }
      },
      "must":{
        "match_phrase":{
          "clcs":"建筑科学"
        }
      }
     
    }
  },
  "_source":["name","isbn","clcs"]
}

结果为:
图片描述

通过total字段可以看到,查询出来的文档个数为146,跟之前查询出来的139个相差了,这是为什么呢?

PS: clcs字段是一个数组,也就是说clcs字段存在下面的情况['建筑科学','电工技术']

阅读 2.1k
1 个回答
新手上路,请多包涵

问题1中的aggs,他是把类似于['建筑科学','电工技术']、['建筑科学']和['科学']等分开统计的;
问题2must中的match_phrase,短语匹配是要把把含有建筑科学建筑科学 类似于 ['建筑科学','电工技术']、['建筑科学']和['科学']都统计出来吧!。
您看一下您问题二的搜索结果没有类似于含有['建筑科学','电工技术']、['科学']这样的数据吗?
希望有所帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进