elasticsearch通过suggest completion 进行搜索补全建议

##########通过suggest completion 进行搜索补全建议############

创建索引使用ik分词器 对于keyword字段设置类型为completion

分词器为ik分词器的ik_smart 分词的力度小,分出来的词少

PUT suggest
{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "keyword": {
        "type": "completion",
        "analyzer": "ik_smart",
        "fields": {
         "key": {
         "type": "keyword"
         }
        }
      },
     "id": {
        "type": "keyword"
     },
     "createDate": {
       "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

批量导入测试数据

refresh=true 意味着空字符串或true在操作发生后立即刷新相关的主碎片和副本碎片(不是整个索引),以便更新后的文档立即出现在搜索结果中,只有经过仔细考虑和核实,从索引和搜索的角度来看,它不会导致性能低下之后,才能这样做。

POST _bulk/?refresh=true
{ "index":{ "_index" : "suggest","_type":"_doc" }}
{ "keyword": "项目"}
{ "index" : { "_index":"suggest", "_type":"_doc"}}
{ "keyword": "项目进度"}
{ "index":{ "_index" : "suggest", "_type" :"_doc" } }
{ "keyword": "项目管理"}
{ "index" :{"_index" : "suggest", "_type":"_doc"}}
{ "keyword": "项目进度及调整 汇总.doc_文档"}
{ "index" : { "_index" :"suggest","_type":"_doc"}}
{ "keyword": "项目"}

GET suggest/_search

进行搜索补全查询 三要素

1.指定前缀搜索prefix 2.指定搜索补全completion 3.指定搜索的filed

GET /suggest/_search
{
  "suggest": {
    "my_suggest": {
      "prefix":"项目",
      "completion":{
        "field" :"keyword"
      }
    }
  }
}

通过completion.size 可以指定每次查询出来的结果数

通过skip_duplicates 可以将重复数据去除

GET /suggest/_search
{
  "suggest": {
    "my_suggest": {
      "prefix":"项目",
      "completion":{
        "field" :"keyword",
        "size":20,
        "skip_duplicates":true
      }
    }
  }
}

查询时添加 _source:{“filed”} 过滤源以只返回建议字段

建议的配置权重作为_score返回。文本字段使用索引建议的输入。建议默认返回完整的文档_source。由于磁盘获取和网络传输开销,_source的大小会影响性能。要节省一些网络开销,可以使用源筛选从_source中过滤掉不必要的字段,以最小化_source的大小。注意,_suggest端点不支持源过滤,但在_search端点上使用suggest

GET /suggest/_search
{
  "_source": "keyword", 
  "suggest": {
    "my_suggest": {
      "prefix":"项目",
      "completion":{
        "field" :"keyword",
        "size":20,
        "skip_duplicates":true
      }
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值