2016-01-04 56 views
0

我做下面的查詢來搜索一些itens:Elasticsearch過濾器時,長期混合字母和數字

{ 
    "filtered" : { 
    "query" : { 
     "match" : { 
     "name_db" : { 
      "query" : "Human", 
      "type" : "boolean" 
     } 
     } 
    }, 
    "filter" : { 
     "terms" : { 
     "cat" : [ "B8E" ], 
     "execution" : "bool" 
     } 
    } 
    } 
} 

請參閱「貓」場?當它像「B8E」一樣沒有結果時(即使它應該),而當它是「320」時,結果是正確的。什麼可能是錯的?爲什麼混合字母和數字會是一個問題?

在此先感謝。

PS:我是新來的elasticsearch

回答

1

我敢肯定你的領域catanalyzed字符串,因此用小寫被索引(這使得對數字沒有區別)。如果你嘗試這個查詢,而不是你會得到結果。

{ 
    "filtered" : { 
    "query" : { 
     "match" : { 
     "name_db" : { 
      "query" : "Human", 
      "type" : "boolean" 
     } 
     } 
    }, 
    "filter" : { 
     "terms" : { 
     "cat" : [ "b8e" ],   <--- search in lowercase 
     "execution" : "bool" 
     } 
    } 
    } 
} 

UPDATE

如果你想索引的cat領域大寫,這樣就可以使用搜索一下大寫(如"B8E"),你需要改變它的映射是not_analyzed,就像這樣:

"cat": { 
    "type": "string", 
    "index": "not_analyzed" 
} 
+0

是的,謝謝它現在的作品。如果我想用大寫索引,我該怎麼辦? –

+0

我已經更新了我的答案。 – Val