2014-04-28 25 views
0

我有一個關於elasticsearch查詢問題:elasticsearch:匹配查詢可以得到結果,而更像查詢無法

我有兩個文檔,內容領域使用的標準分析儀,值:

  1. 「內容」:「但巴菲特在富國銀行的股份,並在其他一些主要銀行的生熱賭注」

  2. 「內容」:「塔可鐘的首席信息衣褲在炎熱的凡徹告訴全國餐館新聞,手機是他們目前」

當我用匹配查詢我能得到這兩個文件主要焦點:

localhost:9200/content/en-us/_search?pretty=true -d ' 
{  
"query" : { 
    "match" : { 
     "content" : "johnson hot" 
    } 
    } 
}' 

但我不能讓他們使用更像查詢:

localhost:9200/content/en-us/_search?pretty=true -d ' 
{ 
    "from": 0, 
    "size": 200, 
    "query": { 
     "more_like_this_field": { 
      "content": { 
       "like_text": "johnson hot", 
       "min_term_freq": 1, 
       "max_query_terms": 12 
      } 
     } 
    } 
}' 

結果:

"hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
} 

有人知道爲什麼嗎? 查詢與SQL中的「like」類似嗎?

感謝 約翰遜

+0

請發佈您的文檔的映射 ..! – BlackPOP

回答

0

更多類似這樣的領域查詢將按指定的字段的內容匹配給你類似的文檔。

你必須min_doc_freq設置爲1。它的默認值是5,所以如果不超過5個文檔出現在它忽略了條款中like_text。由於您只有兩個文檔,所以術語jhonsonhot將被忽略。以下查詢應該可以工作

curl 'http://localhost:9200/content/en-us/_search?pretty=true' -d '{ 
    "from": 0, 
    "size": 200, 
    "query": { 
    "more_like_this_field": { 
     "content": { 
     "like_text": "johnson hot", 
     "min_term_freq": 1, 
     "max_query_terms": 12, 
     "min_doc_freq": 1 
     } 
    } 
    } 
}' 
+0

harsha,非常感謝! – johnson