2015-11-16 75 views
2
工作

我已經加載從以下鏈接的「accounts.json」數據爲ES比如我的機器上:前綴查詢不ElasticSearch

https://www.elastic.co/guide/en/elasticsearch/reference/1.5/_exploring_your_data.html

這增加了1000個文檔的索引「銀行'與'帳戶'類型。夠簡單!

每個文檔具有這樣的結構:

{ 
    "account_number": 0, 
    "balance": 16623, 
    "firstname": "Bradshaw", 
    "lastname": "Mckenzie", 
    "age": 29, 
    "gender": "F", 
    "address": "244 Columbus Place", 
    "employer": "Euron", 
    "email": "[email protected]", 
    "city": "Hobucken", 
    "state": "CO" 
} 

現在我試圖運行該指數簡單的「前綴」查詢。

這裏是一個工作得很好(回來用大量的正確的結果):

curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' 
{ 
    "query": { "prefix" : { "address" : "963" } } 
}' 

這裏是另外一個(這一個不工作):

curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' 
{ 
    "query": { "prefix" : { "firstname" : "Op" } } 
}' 

但有絕對是一個應該在前一個請求中返回的記錄。以下作品:

​​

我也驗證了映射和似乎沒有要在2場任何區別,「姓名」和「地址」:

curl -XGET 'localhost:9200/bank/_mapping/account?pretty' 

這裏是對於那些2相關映射部分:

"address": { 
    "type": "string" 
} 

"firstname": { 
    "type": "string" 
} 

想不通爲什麼一個前綴查詢工作,另一個沒有。任何關於我失蹤的指針?

回答

3

我想你會發現,這將做你所期望的:

curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' 
{ 
    "query": { "prefix" : { "firstname" : "op" } } 
}' 

的原因是,因爲你還沒有指定的分析儀,standard analyzer使用,它轉換標記爲小寫。

下面是一些代碼,我用來測試了我的懷疑:

http://sense.qbox.io/gist/a4f087cee78fd694dd4223eb56e842e1cd1d5847

+0

好極了!感謝斯隆的回答。這工作。我知道這是這樣的。 – vksinghh