POST index_001/_search
{
“query”: {
“term”: {
“name.keyword”: {
“value”: “lonely wolf”
}
}
}
}
这里如果不加上 .keyword
则不会返回任何结果,这是因为 text
类型的字段会被倒排索引进行存储,倒排索引会利用分析器将文本进行分词,我们可以利用分词器来查看下分词结果:
POST /_analyze
{
“analyzer”: “standard”,
“text”: [“lonely wolf”]
}
可以看到,lonely wolf
被分成了 lonely
和 wolf
两个单词,所以我们将 lonely wolf
作为一个进行查询自然是无法查询到结果的。
这里有个地方需要注意,如果我们存入的是大写单词,如 Lonely Wolf
,分词器也是一样的结果,也就是会将大写字母统一转化为小写进行存储,所以进行全文查询的时候也是无法查询出结果。
exists 查询
用来判定是否存在某一个字段,返回包含字段的任何索引值的文档。
GET index_002/_search
{
“query”: {
“exists”: {
“field”: “address”
}
}
}
这里返回的结果就是第三条和第四条数据,像 null
值和空数组 []
不会被返回。
如果想要返回 null
值或者空数组 []
的数据,那么可以利用 bool
查询的 must_