2017-04-03 45 views
0

我想將路徑層次結構分析器添加到我的類型中的一個字段。如何在elasticsearch中爲一個字段配置多個分析器?

我想在同一個字段上配置路徑分析器和​​反向路徑分析器,這樣我就可以得到一個字段的正常路徑和反向路徑。

例如。

路徑=「/角度/指令/結構」

欲配置此路徑字段如每當我分析該領域中,我應該得到在正常順序令牌和逆序如果我指定反轉。

下面是我的映射。

PUT /elastic_course 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "path_analyzer": { 
      "tokenizer": "path_tokenizer" 
     }, 
     "reverse_path_analyzer": { 
      "tokenizer": "path_tokenizer" 
     } 
     }, 
     "tokenizer": { 
     "path_tokenizer": { 
      "type": "path_hierarchy", 
      "delimiter": "/", 
      "replacement": "-" 
     }, 
     "reverse_path_tokenizer": { 
      "type": "path_hierarchy", 
      "delimiter": "/", 
      "replacement": "-" 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "book" : { 
     "properties": { 
      "author": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "genre": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "score": { 
       "type": "double" 
      }, 
      "synopsis": { 
       "type": "string", 
       "index":"analyzed", 
       "analyzer":"english" 
      }, 
      "title": { 
       "type": "string" 
      }, 
      "path":{ 
       "type":"string", 
       "analyzer":"path_analyzer", 
       "fields": { 
       "reverse": { 
        "type":"string", 
        "analyzer":"reverse_path_analyzer" 
       } 
       } 
      } 
     } 
    } 
    } 
} 

我配置了這個分析儀。現在如何獲得路徑和反向路徑的令牌?

謝謝。

回答

3

可以聲明爲path次場,每一個不同的分析:

 "path":{ 
      "type":"string", 
      "analyzer":"path_analyzer", 
      "fields": { 
      "reverse": { 
       "type":"string", 
       "analyzer":"reverse_path_analyzer" 
      } 
      } 
     } 

那麼你可以參考在查詢pathpath.reverse

+0

當然,您需要在索引設置中聲明合適的分析儀。 – Val

+0

很酷,看起來不錯。在編制索引時,ES會爲您分析'path'和'path.reverse'字段。 – Val

+0

對不起,但我不理解。我現在在我的索引中插入了一個文檔。它的路徑字段爲/ book/angular/structural。我應該在我的感官插件中運行什麼查詢來查看令牌? –

相關問題