2015-11-16 76 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