问题描述
我有两个字段的文档:year
和id
。 code
也用作主键(code
)。当我通过_id
搜索时,可以获得结果,但是如果我通过id
搜索,则不会返回任何结果。这是可行的,但没有理由或更改已停止。
ElasticSearch版本:7.1
文档:
code
通过{
"id": 123,"code": "AAAEEXXX","name": "Sample name"
}
进行的搜索查询有效。
id
{
"query": {
"bool": {
"must": {
"term": {
"id": 123
}
}
}
}
}
查询的结果:
id
但是,如果我按{
"took": 2,"timed_out": false,"_shards": {
"total": 5,"successful": 5,"skipped": 0,"Failed": 0
},"hits": {
"total": {
"value": 1,"relation": "eq"
},"max_score": 1.0,"hits": [
{
"_index": "test-index","_type": "_doc","_id": "AAAEEXXX","_score": 1.0,"_source": {
"id": 123,"name": "Sample name"
}
}
]
}
}
搜索不起作用。
code
{
"query": {
"bool": {
"must": {
"term": {
"code": "AAAEEXXX"
}
}
}
}
}
查询的结果:
code
解决方法
使用.keyword
映射进行完全匹配,如下所示:
{
"query": {
"bool": {
"must": {
"term": {
"code.keyword": "AAAEEXXX" <--
}
}
}
}
}