我从:
更改了elasticsearch mapping字段类型 "articles": {
"properties": {
"id": {
"type": "long"
}}}
到
"articles": {
"properties": {
"id": {
"type": "string",
"index": "not_analyzed"
}
之后我做了以下步骤:
映射更新后,我之前的查询过滤器不再起作用,我没有结果:
GET /art/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"type": {
"value": "articles"
}
},
{
"term": {
"id": "123467679"
}
}
]
}
}
}
},
"size": 1,
"sort": [
{
"_score": "desc"
}
]
}
如果我查看此查询,结果就是我的期望:
GET /art/articles/_search
{
"query": {
"match_all": {}
}
}
如果有人知道为什么在字段类型更改后查询不再有效,我将不胜感激。
谢谢!
答案 0 :(得分:1)
查询中的问题是使用ID过滤器。 该查询可以正常更改过滤器:
"term": {
"id": "123467679"
}
在:
"term": {
"_id": "123467679"
}
我仍然是弹性搜索的初学者,以找出为什么映射更改打破了查询,尽管我做了重新索引,但是" _id"修复了我的问题。
您可以在以下位置找到更多信息: elasticsearch mapping reference documentation