首页 文章

在群集中的elasticsearch中停止单词分析器

提问于
浏览
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)Spring数据传输客户端从elasticsearch获取数据时遇到以下错误: -

org.elasticsearch.action.search.SearchPhaseExecutionException:所有分片在org.elasticsearch的org.elasticsearch.action.search.AbstractSearchAsyncAction.onFirstPhaseResult(AbstractSearchAsyncAction.java:206)〜[elasticsearch-2.4.0.jar:2.4.0]失败.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在org.elasticsearch.transport的org.elasticsearch.transport.TransportService $ DirectResponseChannel.processException(TransportService.java:872)〜[elasticsearch-2.4.0.jar:2.4.0]的-2.4.0.jar:2.4.0] .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(Abstrac tRunnable.java:39)〜[elasticsearch-2.4.0.jar:2.4.0]在java.util的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)〜[na:1.8.0_101] . 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.QueryParsingException:[match] analyzer [my_analyzer]未在org.elasticsearch.index.query.MatchQueryParser.parse找到(MatchQueryParser.java:101)〜[elasticsearch-2.4.0.jar:2.4.0]在org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:250)〜[elasticsearch-2.4.0.jar:2.4.0] org.elasticsearch.index.query.IndexQueryParserService.innerParse(IndexQueryParserService.java: 320)〜[elasticsearch-2.4.0.jar:2.4.0]在org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:223)〜[elasticsearch-2.4.0.jar:2.4.0] at at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParser Service.java:218)〜[elasticsearch-2.4.0.jar:2.4.0] org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)〜[elasticsearch-2.4.0.jar:2.4 .0] org.elasticsearch.search.parseSource(SearchService.java:856)〜[elasticsearch-2.4.0.jar:2.4.0] at org.elasticsearch.search.SearchService.createContext(SearchService.java:667 )org.elasticsearch的org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:633)〜[elasticsearch-2.4.0.jar:2.4.0] ~~ [elasticsearch-2.4.0.jar:2.4.0] .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] org.elasticsearch.action.action.SearchServiceTransportAction $ SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:357)〜[elasticsearch-2.4.0.jar:2.4.0] at org . elasticsea orch.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(requestHandlerRegistry.java:77)〜[elasticsearch-2.4]的rch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33)〜[elasticsearch-2.4.0.jar:2.4.0] .0.jar:2.4.0] org.elasticsearch.transport.TransportService $ 4.doRun(TransportService.java:376)〜[elasticsearch-2.4.0.jar:2.4.0] 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 osswcHttpSessionSecurityContextRepository - SecurityContext为空或内容为匿名 - 上下文不会存储在HttpSession中 . 00:52:06.100 [http-bio-8080-exec-3] DEBUG osswcSecurityContextPersistenceFilter - SecurityContextHolder现已清除,请求处理完成时间2017年9月5日上午12:52:06 org.apache.catalina.core.StandardWrapperValve调用SEVERE:用于路径[/ api]的上下文中的servlet [appServlet]的Servlet.service()引发异常[请求处理]失败;嵌套异常无法执行阶段[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];在org.elasticsearch.index.query.QueryParseContext的org.elasticsearch.index.query.MatchQueryParser.parse(MatchQueryParser.java:101)的根本原因[catalogviews] QueryParsingException [[match] analyzer [my_analyzer] not found] . 在org.elasticsearch的org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:223)的org.elasticsearch.index.query.IndexQueryParserService.innerParse(IndexQueryParserService.java:320)中的parseInnerQuery(QueryParseContext.java:250)位于org.elasticsearch.search.SearchService.parseSource的org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)的.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:218)(SearchService.java:856 )org.elasticsearch.search.Search.acateContext(SearchService.java:633)org.elasticsearch.search.SearchService.exe.Pava(SearchService.java:667)org.elasticsearch.search.Search. 264)在org.elasticsea org.elasticsearch.action.TransportAction $ SearchDfsTransportHandler.messageReceived(SearchServiceTransportAction.java:360)org.elasticsearch.transport.TransportRequest TransportRequestHandler.java:33)org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:77)org.elasticsearch.transport.TransportService $ 4.doRun(TransportService.java:376)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)

2 回答

  • 0

    您必须在所有节点中设置 .

    例如,如果将同义词分析器设置为自己的字典,则必须将synonym.txt放在所有节点的特定文件夹中 .

    编辑:看起来您的映射没问题,尝试在分析器中添加“类型”自定义 .

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

    顺便说一下,问题出在分析仪映射本身如安萨尔多斯所述 . 我必须把my_analyzer放在分析器块中 . 我在下面添加了正确的映射 .

    {“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”}}}}}}}

相关问题