2013-04-12 37 views
0

我在想,如果我可以写一个小面查询这样的事情Elasticsearch刻面查询

我的文档结构

UserID, AnswerID[] (int array) 
1 , [9,10,11,56,78,99] 
2 , [10,11,56,78,99] 
3 , [8,10,12,56, 79,99] 
4 , [9,10,11,56,78,99] 

如果我只是想谁回答9,56我可以写用户的数量一个问题。但我有两个列表

List A - 9,10,11 
ListB - 56,78,99 

我想排列这两个列表。

接听[9,56],[9,78],[9,99],[10,56],[10,78],[10,99],[11,56] ...

如何编写一个查询来实现这样的事情。

任何帮助表示赞赏,

谢谢。

回答

0

它不能使用列表时工作:

# Print ES Version 
curl 'http://localhost:9200/' 

# Delete the index `testindex` 
curl -XDELETE 'http://localhost:9200/testindex' 

# Create the index `testindex` 
curl -XPUT 'http://localhost:9200/testindex' -d '{ 
    "settings" : { 
     "index" : { 
      "number_of_shards" : 1, 
      "number_of_replicas" : 0 
     } 
    } 
}' 

# Wait for yellow 
curl -XGET 'http://localhost:9200/_cluster/health?wait_for_status=yellow' 

# Index docs 
curl -XPUT http://localhost:9200/testindex/type/1 -d '{ "listA":"value1", "listB":"value2" }' 
curl -XPUT http://localhost:9200/testindex/type/2 -d '{ "listA":"value1", "listB":"value3" }' 
curl -XPUT http://localhost:9200/testindex/type/3 -d '{ "listA":"value1", "listB":"value2" }' 

# Refresh docs 
curl -XPOST 'http://localhost:9200/testindex/_refresh' 

# TermFacet 
curl -XPOST 'http://localhost:9200/testindex/type/_search?pretty' -d ' 
{ 
    "query": { "match_all" : {} }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "script_field" : "_source.listA + \" - \" + _source.listB" 
      } 
     } 
    } 
}' 

给出:

{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 1, 
    "successful" : 1, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 3, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "testindex", 
     "_type" : "type", 
     "_id" : "1", 
     "_score" : 1.0, "_source" : { "listA":"value1", "listB":"value2" } 
    }, { 
     "_index" : "testindex", 
     "_type" : "type", 
     "_id" : "2", 
     "_score" : 1.0, "_source" : { "listA":"value1", "listB":"value3" } 
    }, { 
     "_index" : "testindex", 
     "_type" : "type", 
     "_id" : "3", 
     "_score" : 1.0, "_source" : { "listA":"value1", "listB":"value2" } 
    } ] 
    }, 
    "facets" : { 
    "tag" : { 
     "_type" : "terms", 
     "missing" : 0, 
     "total" : 0, 
     "other" : -3, 
     "terms" : [ { 
     "term" : "value1 - value2", 
     "count" : 2 
     }, { 
     "term" : "value1 - value3", 
     "count" : 1 
     } ] 
    } 
    } 
} 

但我使用列表时,不知道......我很想知道,如果是可以做到的。 ..