Search code examples
springelasticsearchmaster-slave

Stop words analyzer in elasticsearch in a cluster


I want to know that analyzer (in elasticsearch) should only be implemented on master node or has to be implemented on all the nodes separately?

Could not find an accurate answer.

Please help!

Thanks


{
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"
}
}
}
}
}

Adding Logs : -

I am using Elasticsearch(2.4.1v) Spring data transport client to fetch the data from elasticsearch got stuck with below error : -

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed at org.elasticsearch.action.search.AbstractSearchAsyncAction.onFirstPhaseResult(AbstractSearchAsyncAction.java:206) ~[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.action.search.AbstractSearchAsyncAction$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] at 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] Caused by: org.elasticsearch.index.query.QueryParsingException: [match] analyzer [my_analyzer] not found at org.elasticsearch.index.query.MatchQueryParser.parse(MatchQueryParser.java:101) ~[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.index.query.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.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.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.search.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.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 common frames omitted 00:52:06.100 [http-bio-8080-exec-3] DEBUG o.s.s.w.c.HttpSessionSecurityContextRepository - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 00:52:06.100 [http-bio-8080-exec-3] DEBUG o.s.s.w.c.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed Sep 05, 2017 12:52:06 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [appServlet] in context with path [/api] threw exception [Request processing failed; nested exception is Failed to execute phase [dfs], all shards failed; shardFailures {[tdPbTD9IQhSuvkFMYt1WbA][catalogviews][0]: RemoteTransportException[[Shellshock][my_ip:9300][indices:data/read/search[phase/dfs]]]; nested: SearchParseException[failed to parse search source [{"from":0,"size":10,"query":{"match":{"title":{"query":"Top Coat","type":"boolean","operator":"OR","analyzer":"my_analyzer","fuzziness":"1","minimum_should_match":"95%"}}}}]]; nested: QueryParsingException[[match] analyzer [my_analyzer] not found]; }{[tdPbTD9IQhSuvkFMYt1WbA][catalogviews][1]: RemoteTransportException[[Shellshock][my_ip:9300][indices:data/read/search[phase/dfs]]]; nested: SearchParseException[failed to parse search source [{"from":0,"size":10,"query":{"match":{"title":{"query":"Top Coat","type":"boolean","operator":"OR","analyzer":"my_analyzer","fuzziness":"1","minimum_should_match":"95%"}}}}]]; nested: QueryParsingException[[match] analyzer [my_analyzer] not found]; }{[tdPbTD9IQhSuvkFMYt1WbA][catalogviews][2]: RemoteTransportException[[Shellshock][my_ip:9300][indices:data/read/search[phase/dfs]]]; nested: SearchParseException[failed to parse search source [{"from":0,"size":10,"query":{"match":{"title":{"query":"Top Coat","type":"boolean","operator":"OR","analyzer":"my_analyzer","fuzziness":"1","minimum_should_match":"95%"}}}}]]; nested: QueryParsingException[[match] analyzer [my_analyzer] not found]; }{[tdPbTD9IQhSuvkFMYt1WbA][catalogviews][3]: RemoteTransportException[[Shellshock][my_ip:9300][indices:data/read/search[phase/dfs]]]; nested: SearchParseException[failed to parse search source [{"from":0,"size":10,"query":{"match":{"title":{"query":"Top Coat","type":"boolean","operator":"OR","analyzer":"my_analyzer","fuzziness":"1","minimum_should_match":"95%"}}}}]]; nested: QueryParsingException[[match] analyzer [my_analyzer] not found]; }{[tdPbTD9IQhSuvkFMYt1WbA][catalogviews][4]: RemoteTransportException[[Shellshock][my_ip:9300][indices:data/read/search[phase/dfs]]]; nested: SearchParseException[failed to parse search source [{"from":0,"size":10,"query":{"match":{"title":{"query":"Top Coat","type":"boolean","operator":"OR","analyzer":"my_analyzer","fuzziness":"1","minimum_should_match":"95%"}}}}]]; nested: QueryParsingException[[match] analyzer [my_analyzer] not found]; }] with root cause [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) at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:218) at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33) at org.elasticsearch.search.SearchService.parseSource(SearchService.java:856) at org.elasticsearch.search.SearchService.createContext(SearchService.java:667) at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:633) at org.elasticsearch.search.SearchService.executeDfsPhase(SearchService.java:264) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:360) at org.elasticsearch.search.action.SearchServiceTransportAction$SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:357) at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.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) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)


Solution

  • BTW, The problem was in analyzer mapping itself as mentioned by Ansaldos. I Had to put my_analyzer in analyzer block. i have added correct mapping below.

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