【问题标题】:Elastic Query for full text search用于全文搜索的弹性查询
【发布时间】:2019-04-23 05:14:37
【问题描述】:

使用弹性 POST 请求创建索引(会有多条记录)

POST /rewards/deals/_bulk
{ "index": {}}
{
    "deal_id":25, 
    "title": "Deal 1 Title", 
    "deal_subtitle":"Deal 1 subtitle - Amazing deal 20% off",
    "header_title":"Never before deal", 
    "header_subtitle":"This is available as an amazing deal you can use.", 
    "categories":[
    {"categoryId":32, "categoryName":"Treats!"},
    {"categoryId":31, "categoryName":"Travel & Transportation"}],
    "stores_list": [{"storeId":524, "storeName":"Awesome store", "geoX":"", "geoY":"", "postalCode":"417392"}], 
    "merchant_name": "Merchant Name", 
    "id": 1, 
    "merchant_id": 137, 
    "startEnd":"2018-11-16 00:00:00", 
    "endDate":"2018-11-30 00:00:00"
} 

编写查询以执行全文搜索

GET /rewards/deals/_search
{
  "query": {
    "multi_match": {
      "query": "treat",
      "fields": ["title^10", "deal_subtitle^10", "header_subtitle^5", "header_title^5", "categories.categoryName^3", "stores_list.storeName^3", "stores_list.postalCode^3", "merchant_name^10"]
    }
  }
}

但是我没有得到任何数据来响应“对待”,也可以在 categories.categoryName 中找到对待(源于对待)。有人可以帮忙吗。 当我搜索“零食”时,我得到了回应。如何获得以搜索关键字开头的单词的响应。

【问题讨论】:

  • 尝试使用 _analyze 端点。看看它是否被分析了propelry
  • 哦,让它工作,只需要在我的查询中添加“type”:“phrase_prefix”。

标签: elasticsearch


【解决方案1】:

只需在现有查询中添加“类型”即可使其工作

GET /rewards/deals/_search
{
  "query": {
    "multi_match": {
      "query": "treat",
      "type":"phrase_prefix",
      "fields": ["title^10", "deal_subtitle^10", "header_subtitle^5", "header_title^5", "categories.categoryName^3", "stores_list.storeName^3", "stores_list.postalCode^3", "merchant_name^10"]
    }
  }
}

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2018-11-03
    相关资源
    最近更新 更多