我已将以下链接中的'accounts.json'数据加载到我机器上的ES实例中:
https://www.elastic.co/guide/en/elasticsearch/reference/1.5/_exploring_your_data.html
这会将1000个文档添加到索引“bank”中,类型为“account”。很简单!
每个文档都有这种结构:
{
"account_number": 0,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"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" } }
}'
但是肯定有一个记录存在,应该在之前的请求中返回。以下作品:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match" : { "firstname" : "Opal" } }
}'
我还验证了映射,但是在'firstname'和'address'这两个字段中似乎没有任何区别:
curl -XGET 'localhost:9200/bank/_mapping/account?pretty'
以下是那些2的相关映射部分:
"address": {
"type": "string"
}
"firstname": {
"type": "string"
}
无法弄清楚为什么一个前缀查询有效而另一个没有。关于我缺少什么的任何指示?
答案 0 :(得分:6)
我认为你会发现这会做你期望的事情:
package com.example.william.better_gps;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "message", Toast.LENGTH_LONG).show();
}
}
原因是,由于您尚未指定分析器,因此使用standard analyzer,将标记转换为小写。
以下是我用来测试怀疑的一些代码:
http://sense.qbox.io/gist/a4f087cee78fd694dd4223eb56e842e1cd1d5847