为什么elasticsearch中的以下查询不起作用?

时间:2013-11-18 11:44:07

标签: java elasticsearch

我的测试数据如下所示。

{
   "SequenceLocation":{
   "Assembly":"GPR7",
   "Chr": "10",
   "start": 1111
    }
}

每当我触发下面的查询时,它都会返回正确的值。

{
  "query" : {
    "bool" : {
      "must" : [
      { 
        "term" : {
          "SequenceLocation.Chr": "10"
        }
      }
      ]
    }
  }
  }

但是当我将查询更改为

{
  "query" : {
    "bool" : {
      "must" : [
      { 
        "term" : {
          "SequenceLocation.Assembly": "GPR7"
        }
      }
      ]
    }
  }
  }

它没有从Elasticsearch返回任何命中。能否解释一下我做错了什么?

1 个答案:

答案 0 :(得分:3)

我认为SequenceLocation.Assembly的映射错误。默认分析器会将GPR7.p10拆分为两个令牌gpr7p10

根据文档term query不会分析您的查询,因此您要求GPR7.p10的弹性搜索,但它会被标记为标记gpr7p10。所以它无法比拟。

您应该为"index" : "not_analyzed"字段将mapping设置为SequenceLocation.Assembly来重新创建索引。