2017-09-02 61 views
0

我想知道分析器(在elasticsearch中)應該只在主節點上實現,還是必須分別在所有節點上實現?彈性搜索中的停用詞分析器

找不到準確的答案。

請幫忙!

感謝


{ 
 
filter: { 
 
spanish_stemmer: { 
 
type: "stemmer", 
 
language: "spanish" 
 
}, 
 
spanish_stop: { 
 
type: "stop", 
 
stopwords: "_spanish_" 
 
} 
 
}, 
 
my_analyzer: { 
 
spanish: { 
 
filter: [ 
 
"lowercase", 
 
"spanish_stop", 
 
"spanish_stemmer" 
 
], 
 
tokenizer: "standard" 
 
} 
 
}, 
 
mappings: { 
 
customparent: { 
 
properties: { 
 
name: { 
 
type: "string", 
 
analyzer: "my_analyzer" 
 
}, 
 
title: { 
 
type: "string", 
 
analyzer: "my_analyzer" 
 
}, 
 
fullImageAltDescription: { 
 
type: "string", 
 
analyzer: "my_analyzer" 
 
} 
 
} 
 
} 
 
} 
 
}

添加日誌: -

我使用Elasticsearch(2.4.1v)彈簧數據傳輸客戶端來從elasticsearch數據卡住了與以下錯誤: -

org.elasticsearch.action.search.SearchPhaseExecutionException:所有碎片在org.elasticsearch.action.search.Abs​​tractSearchAsyncAction.onFirstPhaseResult(AbstractSearchAsyncAction.java:206)〜失敗 [elasticsearch-2.4.0.jar:2.4.0] 在org.elasticsearch.action.search.Abs​​tractSearchAsyncAction $ 1.onFailure(AbstractSearchAsyncAction.java:152)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:46 )〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.transport.TransportService $ DirectResponseChannel.processException(TransportService.java:872)〜[elasticsearch-2.4.0.jar:2.4.0] 在org.elasticsearch.transport.TransportService $ DirectResponseChannel.sendResponse(TransportService.java:850)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.transport.TransportService $ 4.onFailure(TransportService.java:387)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable .java:39)〜[elasticsearch-2.4.0.jar:2.4.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)〜[na:1.8.0_101] at java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)〜[na:1.8.0_101] at java.lang.Thread.run(Thread.java:748)〜[na:1.8.0_101] 引起:org.elasticsearch.index.query.MatchQueryParser.parse(MatchQueryParser.java:101)〜[elasticsearch-2.4.0.jar:org.elasticsearch.index.query.QueryParsingException:[match] analyzer [my_analyzer] not found 2.4.0] at org.elasticsearch.index.quer y.QueryParseContext.parseInnerQuery(QueryParseContext.java:250)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.index.query.IndexQueryParserService.innerParse(IndexQueryParserService.java:320)〜[elasticsearch- 2.4.0.jar:2.4.0] at org.elasticsearch。org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:223)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch。 index.query.IndexQueryParserService.parse(IndexQueryParserService.java:218)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)〜[ elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch。org.elasticsearch.search.SearchService.parseSource(SearchService.java:856)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch。 search.SearchService.createContext(SearchService.java:667)〜 [elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.SearchService.createAndPutContext(SearchService.java:633)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch .search.SearchService.executeDfsPhase(SearchService.java:264)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.search.action。SearchServiceTransportAction $ SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:360)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.search.action.SearchServiceTransportAction $ SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:357)〜[ elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch。org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch。 transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:77)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.transport.TransportService $ 4.doRun(TransportService.java:376)〜[elasticsearch-2.4 .0.jar:2.4.0] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)〜[elasticsearch-2.4.0.jar:2。 4.0] ...省略3個常用幀 00:52:06.100 [http-bio-8080-exec-3] DEBUG o.s.s.w.c.HttpSessionSecurityContextRepository - SecurityContext爲空或內容爲匿名 - 上下文不會存儲在HttpSession中。 00:52:06.100 [http-bio-8080-exec-3] DEBUG osswcSecurityContextPersistenceFilter - SecurityContextHolder現在已被清除,因爲請求處理已完成 Sep 05,2017 12:52:06 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE:servlet [appServlet]在上下文中使用path [/ api]的Servlet.service()拋出異常[Request processing failed;嵌套異常無法執行階段[dfs],所有碎片失敗; shardFailures {[tdPbTD9IQhSuvkFMYt1WbA] [catalogviews] [0]:RemoteTransportException [[Shellshock] [my_ip:9300] [indices:data/read/search [phase/dfs]]];嵌套:SearchParseException [未能解析搜索源[{「from」:0,「size」:10,「query」:{「match」:{「title」:{「query」:「Top Coat」,「type」 : 「布爾」, 「操作員」: 「OR」, 「分析器」: 「my_analyzer」, 「模糊」: 「1」, 「minimum_should_match」: 「95%」}}}}]];嵌套:QueryParsingException [[match] analyzer [my_analyzer] not found]; } {[tdPbTD9IQhSuvkFMYt1WbA] [catalogviews] [1]:RemoteTransportException [[Shellshock] [my_ip:9300] [indices:data/read/search [phase/dfs]]];嵌套:SearchParseException [未能解析搜索源[{「from」:0,「size」:10,「query」:{「match」:{「title」:{「query」:「Top Coat」,「type」 : 「布爾」, 「操作員」: 「OR」, 「分析器」: 「my_analyzer」, 「模糊」: 「1」, 「minimum_should_match」: 「95%」}}}}]];嵌套:QueryParsingException [[match] analyzer [my_analyzer] not found]; } {[tdPbTD9IQhSuvkFMYt1WbA] [catalogviews] [2]:RemoteTransportException [[Shellshock] [my_ip:9300] [indices:data/read/search [phase/dfs]]];嵌套:SearchParseException [未能解析搜索源[{「from」:0,「size」:10,「query」:{「match」:{「title」:{「query」:「Top Coat」,「type」 : 「布爾」, 「操作員」: 「OR」, 「分析器」: 「my_analyzer」, 「模糊」: 「1」, 「minimum_should_match」: 「95%」}}}}]];嵌套:QueryParsingException [[match] analyzer [my_analyzer] not found]; } {[tdPbTD9IQhSuvkFMYt1WbA] [catalogviews] [3]:RemoteTransportException [[Shellshock] [my_ip:9300] [indices:data/read/search [phase/dfs]]];嵌套:SearchParseException [未能解析搜索源[{「from」:0,「size」:10,「query」:{「match」:{「title」:{「query」:「Top Coat」,「type」 : 「布爾」, 「操作員」: 「OR」, 「分析器」: 「my_analyzer」, 「模糊」: 「1」, 「minimum_should_match」: 「95%」}}}}]];嵌套:QueryParsingException [[match] analyzer [my_analyzer] not found]; } {[tdPbTD9IQhSuvkFMYt1WbA] [catalogviews] [4]:RemoteTransportException [[Shellshock] [my_ip:9300] [indices:data/read/search [phase/dfs]]];嵌套:SearchParseException [未能解析搜索源[{「from」:0,「size」:10,「query」:{「match」:{「title」:{「query」:「Top Coat」,「type」 : 「布爾」, 「操作員」: 「OR」, 「分析器」: 「my_analyzer」, 「模糊」: 「1」, 「minimum_should_match」: 「95%」}}}}]];嵌套:QueryParsingException [[match] analyzer [my_analyzer] not found]; }]根本原因 [catalogviews] QueryParsingException [[match] analyzer [my_analyzer] not found] at org.elasticsearch.index.query.MatchQueryParser.parse(MatchQueryParser.java:101) at org.elasticsearch.index.query .QueryParseContext.parseInnerQuery(QueryParseContext.java:250) at org.elasticsearch.index.query.IndexQueryParserService.innerParse(IndexQueryParserService.java:320) at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:223 ) 在org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:218) 在org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33) 在org.elasticsearch.search.SearchService 。parseSource(SearchService.java:856) 在org.elasticsearch.search.SearchService.createContext(SearchService.java:667) 在org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:633) 在org.elasticsearch。在org.elasticsearch.search.action.SearchServiceTransportAction $ SearchDfsTransportHandler.messageReceived(SearchService.java:264) SearchServiceTransportAction.java:357) 在org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) 在org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandler Registry.java:77) at org.elasticsearch.transport.TransportService $ 4.doRun(TransportService.java:376) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) at java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748 )

回答

0

順便說一句,問題是在Ansaldos提到的分析器映射本身。我不得不將my_analyzer放在分析器模塊中。我在下面添加了正確的映射。

{ 「設置」:{ 「分析」:{ 「過濾器」:{ 「spanish_stop」:{ 「類型」: 「停止」, 「停止詞」: 「西班牙語」}, 「spanish_stemmer」 :{「type」:「stemmer」, 「language」:「spanish」}},「analyzer」:{「my_analyzer」:{ 「tokenizer」:「standard」,「filter」:[「lowercase」 spanish_stop」, 「spanish_stemmer」]}}, 「映射」:{ 「catalogviewparent」:{ 「屬性」:{ 「標題」:{ 「類型」: 「串」, 「分析器」: 「my_analyzer」}, 「fullImageAltDescription」:{「type」:「string」,「analyzer」:「my_analyzer」 },「name」:{「type」:「string」,「analyzer」:「my_analyzer」}}}}}}}

0

您必須在所有節點中設置。

例如,如果您使用自己的字典設置同義詞分析器,則必須將synonym.txt放置在所有節點的特定文件夾中。

編輯: 看起來像你的映射是好的,嘗試添加'type'custom到你的分析器。

"analyzer": { 
    "spanish": { 
     "type": "custom", 
     "tokenizer": "standard", 
     "filter": [ 
      "lowercase", 
      "spanish_stop", 
      "spanish_stemmer" 
     ] 
    } 
} 
+0

好的,會嘗試並讓你知道。 – Dipt166

+0

嗨Ansaldos,我收到一個錯誤: - 異常無法執行階段[dfs],所有碎片失敗; shardFailures ------->和------> QueryParsingException [[match] analyzer [] not found ............你能否幫忙 – Dipt166

+0

例外說你的分析器丟失 - 所以也許你忘了添加到所有節點。再次檢查,如果問題仍然存在,請顯示您的映射。 – Ansaldos