对象上的 elasticsearch 过滤器 属性
elasticsearch filter on object property
我正在尝试过滤对象(人)属性(姓名)上的术语,但似乎没有弄清楚哪里出了问题。如果我对字段 "t" 进行过滤,它会起作用,但我似乎无法对对象进行过滤!谁能帮帮忙!
我的查询如下:
"query": {
"filtered" : {
"filter" : {
"term" : { "person.fname" : "JOHN"}
}
}
}
我的映射:
{
"_ttl": {"enabled": true, "default": '90d'},
"properties" : {
"t": { "type" : "date" },
"person": { "type" : "object",
"properties" : {
"fname" : { "type" : "string"},
"lname" : { "type" : "string"}
}
}
}
}
该文档存在于索引中...
{
"_index" : "personindex",
"_type" : "S",
"_id" : "AUxnFFrAGK3sw8tqMMY0",
"_score" : 1.0,
"_source":{"t":1427658527178,"person":{"fname":"JOHN","lname":"DOE"}}
}
问题与分析有关。由于您的映射未指定分析器,因此使用了 standard analyzer。标准分析器将标记转换为小写。所以术语 "john" 最终出现在倒排索引中,但术语 "JOHN" 却没有。当您 运行 一个 term
查询时,查询文本不会被分析,并且由于没有文档与确切的术语 "JOHN" 匹配,所以您不会得到任何结果。
这个查询会给你你想要的:
{
"query": {
"filtered": {
"filter": {
"term": {
"person.fname": "john"
}
}
}
}
}
这个也一样(因为 match query 对查询文本执行分析):
{
"query": {
"match": {
"person.fname": "JOHN"
}
}
}
或者,您可以在该字段上设置不同的分析器(或 none)以使您的术语过滤器正常工作。
这是我用来玩弄它的一些代码:
http://sense.qbox.io/gist/a87bcca08496218b07287d358939c1caed42f047
我正在尝试过滤对象(人)属性(姓名)上的术语,但似乎没有弄清楚哪里出了问题。如果我对字段 "t" 进行过滤,它会起作用,但我似乎无法对对象进行过滤!谁能帮帮忙!
我的查询如下:
"query": {
"filtered" : {
"filter" : {
"term" : { "person.fname" : "JOHN"}
}
}
}
我的映射:
{
"_ttl": {"enabled": true, "default": '90d'},
"properties" : {
"t": { "type" : "date" },
"person": { "type" : "object",
"properties" : {
"fname" : { "type" : "string"},
"lname" : { "type" : "string"}
}
}
}
}
该文档存在于索引中...
{
"_index" : "personindex",
"_type" : "S",
"_id" : "AUxnFFrAGK3sw8tqMMY0",
"_score" : 1.0,
"_source":{"t":1427658527178,"person":{"fname":"JOHN","lname":"DOE"}}
}
问题与分析有关。由于您的映射未指定分析器,因此使用了 standard analyzer。标准分析器将标记转换为小写。所以术语 "john" 最终出现在倒排索引中,但术语 "JOHN" 却没有。当您 运行 一个 term
查询时,查询文本不会被分析,并且由于没有文档与确切的术语 "JOHN" 匹配,所以您不会得到任何结果。
这个查询会给你你想要的:
{
"query": {
"filtered": {
"filter": {
"term": {
"person.fname": "john"
}
}
}
}
}
这个也一样(因为 match query 对查询文本执行分析):
{
"query": {
"match": {
"person.fname": "JOHN"
}
}
}
或者,您可以在该字段上设置不同的分析器(或 none)以使您的术语过滤器正常工作。
这是我用来玩弄它的一些代码:
http://sense.qbox.io/gist/a87bcca08496218b07287d358939c1caed42f047