1. 程式人生 > 其它 >Elasticsearch 論壇實戰-基於multi_match語法實現dis_max+tie_breaker

Elasticsearch 論壇實戰-基於multi_match語法實現dis_max+tie_breaker

技術標籤:Elasticsearch實戰elasticsearch

Elasticsearch實戰

準備資料

PUT /forum/post/_bulk
{"index":{"_id":1}}
{"title":"java php", "content":"forum open MIjMReACTGaN564AnCZuHg"}
{"index":{"_id":2}}
{"title":"elasticsearch java apm-agent-configuration KvkaTyKFT-2zocQNC9j5nA", "content":"kibana post open MIjMReACTGaN564AnCZuHg  4508327 NfcOxURmuyoBIxJBSbvw MIjMReACTGaN564AnCZuHg"}
{"index":{"_id":3}}
{"title":"elasticsearch hadoop", "content":"kibana green open"}

繼續上一課時dis_max查詢上面的資料

minimum_should_match控制搜尋結果的精準度(去長尾),只有匹配一定數量的關鍵詞的資料,才能返回

boost 提升權重

GET /forum/post/_search
{
  "query": {
    "dis_max": {
      "queries": [
        {
          "match": {
            "title": {
              "query": "java kibana",
              "minimum_should_match": "50%", 
              "boost": 2
            }
          }
        },
        {
          "match": {
            "content": {
              "query": "java kibana",
              "minimum_should_match": "50%"
            }
          }
        }
      ],
      "tie_breaker": 0.7
    }
  }
}

使用multi_match簡寫上面的命令

{
  "query": {
    "multi_match": {
      "query": "java kibana",
      "type": "best_fields", 
      "fields": ["title^2","content"],
      "tie_breaker": 0.7, 
      "minimum_should_match": "50%"
    }
  }
}

歡迎諮詢公眾號《小馬JAVA》