es之suggest

suggest根据关键字从指定的索引中推进和关键词拼写相近的词

GET kibana_sample_data_ecommerce/_search
{
  "suggest": {
    "term-suggestion": {
      "text": "ddie",
      "term": {
        "field": "customer_first_name",
        "prefix_length":0,
        "suggest_mode":"always"
      }
    }
  }
}

phrase suggest

GET suggest_index/_search
{
  "suggest": {
    "term-suggestion": {
      "text": "love this",
      "phrase": {
        "field": "region_name",
        "max_errors":10,
        "confidence":0
      }
    }
  }
}

自动补全,仅支持前缀补全

自动补全的要在mapping中设置。

PUT complete_index/
{
  "mappings": {
    "properties": {
      "title":{
        "type": "completion"
      }
    }
  }
}

PUT complete_index/_doc/1
{
  "title":"testgood"
}

GET complete_index/_search
{
  "suggest": {
    "YOUR_SUGGESTION": {
      "text": "te",
      "completion": {
        "field": "title"
      }
    }
  }  
}

上下文自动补全,仅支持前缀补全

PUT complete_index2/
{
  "mappings": {
    "properties": {
      "title":{
        "type": "completion",
        "contexts":[
          {
            "type":"category",
            "name":"title_cate"
          }
        ]
      }
    }
  }
}

POST complete_index2/_doc/
{
  "rel_title":"i love this moive",
  "title":{
    "input":"love this movie",
    "contexts":{
      "title_cate":"moive"
    }
  }
}

POST complete_index2/_doc/
{
  "rel_title":"i love this coffie",
  "title":{
    "input":"love this coffie",
    "contexts":{
      "title_cate":"coffie"
    }
  }
}

GET complete_index2/_search
{
  "suggest": {
    "YOUR_SUGGESTION": {
      "prefix": "lov",
      "completion": {
        "field": "title",
        "contexts":{
          "title_cate":"coffie"
        }
      }
    }
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Elasticsearch中,查询词提示(suggestion)功能是通过使用称为“Suggesters”(建议器)的功能来实现的。当启用查询词提示时,Elasticsearch会在内存中维护一个特定的数据结构来支持快速的建议查询。 内存的使用情况主要取决于以下几个因素: 1. 索引大小:索引的大小会直接影响内存的使用情况。如果索引很大,那么建议器需要维护更多的数据结构来支持查询词提示,从而占用更多的内存。 2. 建议器类型:Elasticsearch提供了多种类型的建议器,如term、phrase、completion等。不同类型的建议器会使用不同的数据结构和算法,从而对内存的使用情况产生影响。 3. 数据分布:建议器需要根据数据分布来构建相关的数据结构。如果数据分布不均匀,可能需要更多的内存来存储相关信息。 为了控制内存的使用情况,可以考虑以下几个方面: 1. 硬件资源:确保Elasticsearch集群具有足够的内存资源,以满足建议器所需的内存需求。根据索引大小和查询负载,调整集群的硬件配置,以确保充足的内存可用性。 2. 索引优化:通过调整索引的分片和副本设置,以及优化查询性能,减少对内存的压力。 3. 控制建议器的参数:Elasticsearch提供了一些参数来控制建议器的行为,如size、sort等。根据实际需求,调整这些参数以控制返回结果的数量和排序方式。 4. 监控和优化:定期监控集群的内存使用情况,并根据需要进行优化。可以使用Elasticsearch提供的监控工具和API,如Elasticsearch集群健康API、节点状态API等。 总的来说,内存的使用情况会受到多个因素的影响,包括索引大小、建议器类型和数据分布等。通过合理配置硬件资源、优化索引和建议器参数,并进行监控和优化,可以控制和优化Elasticsearch中查询词提示功能的内存使用情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值