2015-01-02 135 views
1

我是彈性搜索的新手。我的用例是在一組XML文件中搜索文本。所以我的問題是。XML文件內容的彈性搜索

  1. 這是可以實現的使用彈性搜索
  2. 我試過如下:

    安裝彈性搜索,應用安裝插件

創建一個映射:

curl -XPUT 'http://localhost:9200/second/?pretty=1' -d ' 
{ 
     "mapping" : { 
      "xmlfile" : { 
       "properties" : { 
        "attachment": { "type" : "attachment" } 
       } 
      } 
     } 
    } 

索引XML文件:

curl -XPOST "http://localhost:9200/second/xmlfile?pretty=1" -d ' 
     { 
     "file" : "'`base64 D:\\games.xml | perl -pe 's/\n/\\n/g'`'" 
     } 

試圖尋找:

curl -XGET 'http://localhost:9200/second/xmlfile/_search?pretty=1' -d ' 
{ 
    "query" : { 
     "text" : { 
     "file" : "curField" //currField is a string inside my xml 
     } 
    } 
} 

上述搜索給了我SearchNotFound例外,這樣的id

curl -XGET 'http://localhost:9200/second/xmlfile/_search?pretty=1' -d ' 
{ 
    "query" : { 
     "term" : { 
     "file" : "curField" //currField is a string inside my xml 
     } 
    } 
} 

這給了我:

{ 
    "took": 14, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 0, 
     "max_score": null, 
     "hits": [] 
    } 
} 

它說0人次。 我也嘗試將我的XML轉換爲JSON對象和索引。但是這對我的程序來說是很多工作。有人可以幫助我嗎?爲什麼在XML包含字符串時說0命中?

回答

5

1。 XML搜索 - 這是否可以使用彈性搜索

是的絕對。 但是我會採取不同的方法來處理你的問題。 我會改爲

  1. 創建一個自定義分析器來解析XML數據。例如,如果您對標籤不感興趣,而只是對標籤內的數據感興趣,請使用html strip char filter
  2. 將XML文檔存儲在單個字符串字段中 - attachment主要用於二進制數據,我猜你的XML文檔是ASCII或UTF-8。