我正在尝试使用其他索引上的文档作为搜索字符串的来源进行“术语”查询。但是我没有受到任何打击。
- 索引id为2的用户的信息,特别是其关注者
curl -XPUT localhost:9200/users/user/2 -d '{
"followers" : ["1", "3"]
}'
- 从id为2的用户索引推文
curl -XPUT localhost:9200/tweets/tweet/1 -d '{
"user" : "2"
}'
- 搜索与用户2的关注者匹配的所有推文
curl -XGET localhost:9200/tweets/_search -d '{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"user" : {
"index" : "users",
"type" : "user",
"id" : "2",
"path" : "followers"
},
"_cache_key" : "user_2_friends"
}
}
}
}
}'
结果:0次点击。
但是,如果我将查询更改为:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"user" : [2]
}
}
}
}
}'
上面的查询给我1次点击,这意味着外部搜索查询存在一些问题。
详细说明: http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html
我正在使用ES版本:1.5.2也在1.4中尝试了查询。
有什么建议吗?
答案 0 :(得分:1)
查询:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"user" : [1,3]
}
}
}
}
}'
与
相同{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"user" : {
"index" : "users",
"type" : "user",
"id" : "2",
"path" : "followers"
},
"_cache_key" : "user_2_friends"
}
}
}
}
}
而不是OP中的那个。 您可能没有为用户1和3索引推文。