ElasticSearch(es) match查询

es中match查询属于全文查询,在查询时,ES会先分析查询字符串,然后根据分词构建查询。

参数

1. query:指定匹配的值

2. operator:匹配条件类型,有两个值,and:条件分词后都要匹配,or:条件分词后有一个匹配即可(默认)

3. minmum_should_match:指定最小匹配的数量

match or and查询

es中match查询中,查询字符串分词后,默认是or或者的关系。or查询中有参数minimum_should_match设置每个子查询应该匹配多少个分词,默认值是1。详情见es match or,and查询

非字符串精准查询

GET /bank/_search
{
  "query": {
    "match": {
      "passnum": 100
    }
  }
}

此时max_score为1.0,该条记录的_score就是1.0,这是精确匹配。

字符串模糊查询

GET /bank/_search
{
    "from":0,
    "size":2,
    "query" : {
        "match" : {
            "passname" : "欧阳"
        }
    },
    "fields": ["id", "passname"],
    "_source": false
}

查询passname中包含"欧阳"的人名,同时只返回id,passname的数据,fields用于指定列返回,from,size表示分页展示数据。

match查询多个字段

可以用must或者must not来实现多字段查询

GET /bank/_search
{    
  "query": {     
	"must": [{   
            "match": {   
            "title": "Search"   
	}  
	},  
	{   
            "match": {   
	    "content": "Elasticsearch"   
	}  
   }]
  }
}

查询title包含seatch和content都包含Elasticsearch的数据

总结

1. es索引和搜索时都会进行分词,查询字符串先传递到一个合适的分词器,然后生成一个供查询的词项列表。

2. match查询时候,会先对输入的查询进行分词,然后每个词项逐个进行底层的查询,最终将结果进行合并,并为每个文档生成一个算分。

3. 对Text类型字段,索引时会进行分词,大写字母会转成小写等,一般都用match搜索。


版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。