我正在尝试执行一个术语查询,其值为一个字符串,其中包含冒号。它与sense插件一起工作正常。
GET XX/XX/_search
{
"query": {
"term" : { "XX.XX" : "7:140453136:T" }
}
}
但是相同的术语查询不适用于Java API。
SearchRequestBuilder response = client.prepareSearch(indexName);
response.setTypes(indexType);
response.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
response.setQuery(QueryBuilders.termQuery("XX.XX", "7:140453136:T"));
response.setFrom(0).setSize(60).setExplain(true);
SearchResponse matchallResponse = response.execute().actionGet()
错误:
TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.action.search.SearchResponse]]
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.codecs.lucene50.Lucene50DocValuesFormat
我看到已经存在一个问题。但那里发布的解决方案可以解决我的问题。
答案 0 :(得分:0)
我的classpath中有最新的lucene核心库,它没有Lucene50DocValuesFormat。我用5.3.1替换了lucene核心,现在一切正常。不要使用lucene core> 5.3.1和ES 2.1.1是解决这个问题的方法。感谢大家!希望这有帮助!