我對elasticsearch非常陌生,文檔真的讓我困惑,所以請在這裏忍受一下。Elasticsearch:與其中的數組匹配文檔
我有一個指標叫zproducts
並根據它稱爲被映射item
類型看起來有點像這樣:
{
"item_name" : "Product A",
"category_ids" : [ "id1", "id2" ]
},
{
"item_name" : "Product B",
"category_ids" : [ "id1" ]
},
{
"item_name" : "Product C",
"category_ids" : [ "id2" ]
}
我希望能夠查詢匹配的的至少一個項目類別。即。查詢id2
將返回產品A和C.
看起來我有和this傢伙一模一樣的問題。
但是,建議的解決方案並不適合我。
這是我當前的查詢:
/zproducts/items/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category_ids": "id2"
}
}
]
}
}
}
後續測試查詢:
{
"query": {
"filtered": {
"filter": {
"term": {
"category_ids": "id2"
}
}
}
}
}
兩個查詢返回上存儲所有的項目,不只是我想的那些查詢。
還有原來的查詢,由於某種原因,曾經工作但完全停止工作。
{
"query": {
"bool": {
"must": [
{
"match": {
"category_ids": {
"query": "id2",
"operator": "or"
}
}
}
]
}
}
}
那麼我在這裏做錯了什麼?任何人都可以擺脫一些光?
如果'category_ids'的類型是'string',所有的查詢都會給你預期的結果。我只是在我的本地設置上嘗試過它們。你可以分享'GET zproducts/item/_mapping'的結果嗎? – bittusarkar 2015-03-31 16:01:40
@ baskar-讓我把它放在[pastebin](http://pastebin.com/K9bv6vNp)中,因爲它很長。我很確定'category_ids'的類型是'string'。 – rgin 2015-03-31 16:19:12