2014-10-27 115 views
0

我有以下結構的文檔值:查詢與具有特殊字符

{ 
    "_index": "logstash-2014.10.08", 
    "_type": "iis", 
    "_id": "HRM7LWfBSPGo9PUS0Z1ynw", 
    "_score": 1, 
    "_source": { 
     "@version": "1", 
     "@timestamp": "2014-10-08T12:37:26.000Z", 
     "type": "iis", 
     "messageId": 
    "O5pUHWOuEnTT0xQxXfNW6L+O6EMIjTFO7e//t+S/99en4zzOnlhqjEKlw02ZZVRFlyVaawA==" 
    } 
} 

這裏是我的映射:

 "messageId" : { 
     "type" : "string", 
     "norms" : { 
      "enabled" : false 
     }, 
     "fields" : { 
      "raw" : { 
      "type" : "string", 
      "index" : "not_analyzed", 
      "ignore_above" : 256 
      } 
     } 
     } 

我試圖執行一個查詢,我想僅返回具有在查詢時傳遞的messageId的確切值的文檔。我試圖用匹配和過濾器來執行查詢。

如果我使用來看,它返回零個文件:

{ 
    "query": { 
    "term" : { 
     "messageId" : 
     "O5pUHWOuEnTT0xQxXfNW6L+O6EMIjTFO7e//t+S/99en4zzOnlhqjEKlw02ZZVRFlyVaawA==" 
     } 
    } 
} 

當我使用的比賽,我可以讓我的文檔回來,但如果我做MESSAGEID變化不大,仍然會返回我的文檔和郵件ID查詢與文檔不同。

{ 
    "query": { 
    "match" : { 
     "messageId" : 
      "O5pUHWOuxXfNW6L+O6EMIjTFO7e//t+S/99en4zzOnlhqjEKlw02ZZVRFlyVaawA==" 
     } 
    } 
} 

任何人都知道我該如何做一個查詢並檢索具有確切的messageId值的文檔?

提前致謝。

+0

你可以添加cURL命令來重新創建它嗎?我不認爲您的映射正在索引時間應用。您可以嘗試使用測試現場分析器來確保將其作爲一個令牌進行索引。 – Andy 2014-10-27 18:14:10

+0

我使用Logstash將其編入索引。我如何使用現場分析儀? – placplacboom 2014-10-27 18:20:02

+0

我不熟悉Logstash的規範,你的索引是否自動配置?使用cURL命令測試現場分析器@ http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-analyze.html – Andy 2014-10-27 18:33:46

回答

0

我不認爲這是一個特殊的人物問題,而是我認爲它是一個指標分析與非分析問題。如果您使用常規分析字段,則需要以小寫字母搜索所有內容以獲得術語匹配。對於未分析的情況,情況並非如此。

我用你的樣品進行了下面的測試,我能夠得到你想要的結果。

PUT index1 

PUT index1/type1/_mapping 
{ 
    "type1": { 
    "properties": { 
     "raw" : { 
      "type" : "string", 
      "index" : "not_analyzed", 
      "ignore_above" : 256 
      } 
    } 
    } 
} 

POST index1/type1 
{ 
    "raw": "O5pUHWOuEnTT0xQxXfNW6L+O6EMIjTFO7e//t+S/99en4zzOnlhqjEKlw02ZZVRFlyVaawA==" 
} 

GET index1/type1/_search 
{ 
    "query": { 
    "term": { 
     "raw": { 
     "value": "O5pUHWOuEnTT0xQxXfNW6L+O6EMIjTFO7e//t+S/99en4zzOnlhqjEKlw02ZZVRFlyVaawA==" 
     } 
    } 
    } 
} 

我的猜測是分析了您正在處理的字段中的數據。你可以通過使用_mapping API來檢查。在我的例子中,這將是:

GET index1/type1/_mapping