包含以下字符串值的elasticsearch term查询:(冒号)

时间:2016-01-28 18:19:41

标签: elasticsearch

我正在尝试执行一个术语查询,其值为一个字符串,其中包含冒号。它与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
  1. 在我的映射中,我已将此字段设置为未分析。所以我确信elasticsearch不会令人信服。 2.我正在使用ES 2.1.1
  2. 我看到已经存在一个问题。但那里发布的解决方案可以解决我的问题。

1 个答案:

答案 0 :(得分:0)

我的classpath中有最新的lucene核心库,它没有Lucene50DocValuesFormat。我用5.3.1替换了lucene核心,现在一切正常。不要使用lucene core> 5.3.1和ES 2.1.1是解决这个问题的方法。感谢大家!希望这有帮助!