2014-11-15 74 views
3

我是elasticsearch的新手,並且正在環顧四周模糊查詢搜索。
我做了一個新的指數產品與對象/記錄值這樣在彈性搜索中使用模糊查詢時查找實際匹配詞

{ 
      "_index": "products", 
      "_type": "product", 
      "_id": "10", 
      "_score": 1, 
      "_source": { 
       "value": [ 
        "Ipad", 
        "Apple", 
        "Air", 
        "32 GB" 
       ] 
      } 
     } 

現在,當我像

{ 
    query: { 
     fuzzy: { 
      value: "tpad" 
     } 
    } 
} 

執行在elasticsearch模糊查詢搜索,它返回我正確的記錄(產品只是上面做的),這是預期的。
而且我知道tpad一詞匹配ipad,所以記錄是返回。
但技術上我怎麼會知道它匹配ipad。彈性搜索只返回這樣

{ 
"took": 4, 
"timed_out": false, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
}, 
"hits": { 
    "total": 1, 
    "max_score": 0.61489093, 
    "hits": [ 
     { 
      "_index": "products", 
      "_type": "product", 
      "_id": "10", 
      "_score": 0.61489093, 
      "_source": { 
       "value": [ 
        "Ipad", 
        "Apple", 
        "Air", 
        "32 GB" 
       ] 
      } 
     } 
    ] 
} 
} 

完整記錄(或記錄)是否有彈性的搜索條件的方式,這樣我可以知道它是否匹配tpadipad

回答

3

如果使用highlighting,Elasticsearch會表明匹配方面:

curl -XGET http://localhost:9200/products/product/_search?pretty -d '{ 
    "query" : { 
    "fuzzy" : { 
     "value" : "tpad" 
     } 
    }, 
    "highlight": { 
    "fields" : { 
     "value" : {} 
    } 
    } 
}' 

Elasticsearch將返回匹配與該片文件強調:

{ 
    "took" : 31, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 0.13424811, 
    "hits" : [ { 
     "_index" : "products", 
     "_type" : "product", 
     "_id" : "10", 
     "_score" : 0.13424811, 
     "_source":{ 
"value" : ["Ipad", 
       "Apple", 
       "Air", 
       "32 GB" 
       ] 
      }, 
     "highlight" : { 
     "value" : [ "<em>Ipad</em>" ] 
     } 
    } ] 
    } 
} 
+2

是否有可能以相反的方式做到這一點?我想知道「tpad」(來自我的查詢字符串)匹配 - 而不是知道「ipad」(來自文檔)匹配。 – ankr

+1

@ankr您是否爲您的查詢得到了答案?我也在尋找一些關於不匹配的詞的信息,但到目前爲止,我沒有找到任何東西。 – paweloque

1

我知道這個問題是舊的,但我只是跑了進去。我這樣做的方式是在構建查詢時填充查詢名稱字段。這樣它將回到「matchedQuery」字段中作爲迴應。希望這會有所幫助:)

+0

能否詳細說明一下?謝謝 –