我有以下文件:
{
"_index": "testrest",
"_type": "testrest",
"_id": "sadfasdfw1",
"_score": 1,
"_source": {,
"s_item_name": "Create",
"request_id": "35",
"Result": "Match",
}
},
我正在尝试获取term
字段中的Match
值Result
和request_id
的{{1}}的记录。
这是我的查询:
35
但是我得到{
"query": {
"bool": {
"must": [
{ "term": { "Result": "Match" }}
],
"filter": {
"term": {
"request_id": "35"
}
}
}
}
}
的结果。
用0
代替term
会给我带来结果。
答案 0 :(得分:1)
这是因为Result
是text
字段,因此将对其进行分析,并将值索引为match
而不是Match
。
通常,您应该not use a term
query,但最好使用match
查询。就您而言,这将解决问题。
如果您绝对要使用term
查询并有一个名为Result.keyword
的字段,那么您也可以这样做。
所以回顾一下:
{
"query": {
"bool": {
"must": [
{ "match": { "Result": "Match" }} <-- use match query
],
"filter": {
"term": {
"request_id": "35"
}
}
}
}
}
或
{
"query": {
"bool": {
"must": [
{ "term": { "Result.keyword": "Match" }} <-- use term query on keyword field
],
"filter": {
"term": {
"request_id": "35"
}
}
}
}
}