我正在尝试在弹性搜索中使用查询,其中忽略所有英语(“taal”:“engels”)书籍。 我以为我应该使用bool查询和must_not,条件为“taal”:查询中的“恩格斯”。
GET books/_search
{
"query": {
"bool": {
"must_not" : {
"term" : { "taal" : "Engels" }
}
}
}
}
但是,在Kibana中运行此查询时,它仍会显示带有language = english的结果。
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 501,
"max_score": 1,
"hits": [
{
"_index": "producten4",
"_type": "boek",
"_id": "9780582401815",
"_score": 1,
"_source": {
"isbn": "9780582401815",
"hoofdtitel": "Forrest Gump",
"taal": "Engels",
}
},
ETCETERA....
]
}
}
田野印章的映射:
"taal": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"raw": {
"type": "keyword"
},
"taal": {
"type": "text"
}
}
}
答案 0 :(得分:0)
尝试使用"匹配"而不是" term"?
答案 1 :(得分:0)
我通过将.raw添加到fieldname:
来修复它bool: {
must_not: [
{
term: {
'taal.raw': 'Engels',
}
},
{
term: {
'taal.raw': 'Nederlands',
}
}]
}