我的测试数据如下所示。
{
"SequenceLocation":{
"Assembly":"GPR7",
"Chr": "10",
"start": 1111
}
}
每当我触发下面的查询时,它都会返回正确的值。
{
"query" : {
"bool" : {
"must" : [
{
"term" : {
"SequenceLocation.Chr": "10"
}
}
]
}
}
}
但是当我将查询更改为
时{
"query" : {
"bool" : {
"must" : [
{
"term" : {
"SequenceLocation.Assembly": "GPR7"
}
}
]
}
}
}
它没有从Elasticsearch返回任何命中。能否解释一下我做错了什么?
答案 0 :(得分:3)
我认为SequenceLocation.Assembly
的映射错误。默认分析器会将GPR7.p10
拆分为两个令牌gpr7
和p10
。
根据文档term query不会分析您的查询,因此您要求GPR7.p10
的弹性搜索,但它会被标记为标记gpr7
和p10
。所以它无法比拟。
您应该为"index" : "not_analyzed"
字段将mapping设置为SequenceLocation.Assembly
来重新创建索引。