词条查询: term
词条查询不会分析查询条件,只有当词条和查询字符串完全匹配时才匹配搜索
全文查询: match
全文查询会分析查询条件,先将查询条件进行分词,然后查询,求并集
创建索引
需要在创建索引时,将索引指定好选择哪一个分词器
查询(iterm)
# term词条查询。查询的条件字符串和词条完全匹配
# es默认使用的分词器是standard,一个字一个词
# 首先是将索引的分词进行指定
PUT person
{
"mappings": {
"properties": {
"name":{
"type":"keyword"
},
"age":{
"type":"integer"
},
"address":{
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
POST person/_doc/1
{
"name":"王五",
"age":22,
"address":"北京朝阳区"
}
POST person/_doc/2
{
"name":"里斯",
"age":22,
"address":"北京海淀区"
}
POST person/_doc/3
{
"name":"王五",
"age":22,
"address":"上海外滩"
}
GET person/_search
{
"query": {
"term": {
"address": {
"value": "北京"
}
}
}
}
查询(match)
总结
如果某一个字段是text属性,我们就需要对它进行分词器进行指定,不然默认的是standard