我在Elasticsearch集群中有几个文档,其中的字段isInFight
拥有布尔值。映射已正确设置(已经对此进行了双重检查)为布尔值。
当我使用以下命令进行搜索时
: curl -XGET localhost:9200/default/_search --data '{"query": {"term": {"isInFight": true}}}'
我得到的文档返回的字段为true和false。将搜索查询中的值更改为false
,根本不会返回任何文档。
在我看来,术语查询一词是检查该字段是否存在,而不是其值。我在互联网上发现的所有内容都表明此查询是解决之道。
我在这里错过了什么吗?是否存在与此有关的已知错误?
有问题的Elasticsearch是版本5.5.2
和ubuntu 6.6.0
服务器上的Lucene版本16.04
。
答案 0 :(得分:0)
这对我有用:
{
"query": {
"bool": {
"must": {
"term": {
"isInFight": true
}
}
}
}
}
答案 1 :(得分:0)
在我的本地Elasticsearch中尝试此操作,但未发现问题
POST test_index/doc
{
"id": 1,
"isInFight": false
}
POST test_index/doc
{
"id": 2,
"isInFight": true
}
POST test_index/doc
{
"id": 3,
"isInFight": true
}
GET test_index/doc/_search
{
"query": {
"term": { "isInFight": false }
}
}
得到了这个结果
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "test_index",
"_type": "doc",
"_id": "AWU2Dxm7GR2l1TPuyKhN",
"_score": 0.2876821,
"_source": {
"id": 1,
"isInFight": false
}
}
]
}
}