十九种Elasticsearch字符串搜索方式终极介绍
Elasticsearch提供了多种方式来搜索字符串字段。以下是一些常用的字符串搜索方式:
- 完全匹配搜索:使用
match_phrase
查询进行确切的短语搜索。
GET /_search
{
"query": {
"match_phrase": {
"field": "text to search for"
}
}
}
- 全文搜索:使用
match
查询进行全文搜索,可以对字段进行分词后再进行匹配。
GET /_search
{
"query": {
"match": {
"field": "text to search for"
}
}
}
- 多字段搜索:使用
multi_match
查询在多个字段中进行搜索。
GET /_search
{
"query": {
"multi_match": {
"query": "text to search for",
"fields": ["title", "body"]
}
}
}
- 模糊搜索:使用
fuzzy
查询进行模糊匹配,可以找到接近给定词的文档。
GET /_search
{
"query": {
"fuzzy": {
"field": "text to search for"
}
}
}
- 通配符搜索:使用
wildcard
查询进行通配符搜索。
GET /_search
{
"query": {
"wildcard": {
"field": "te*t"
}
}
}
- 正则表达式搜索:使用
regexp
查询进行正则表达式搜索。
GET /_search
{
"query": {
"regexp": {
"field.keyword": "rege(xp)?"
}
}
}
- 字段存在查询:使用
exists
查询检查字段是否存在。
GET /_search
{
"query": {
"exists": {
"field": "user"
}
}
}
- 字段不存在查询:使用
exists
查询的must_not
子句检查字段是否不存在。
GET /_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "user"
}
}
}
}
}
- 范围查询:使用
range
查询在数值或时间范围内搜索。
GET /_search
{
"query": {
"range": {
"age": {
"gte": 20,
"lte": 30
}
}
}
}
- 布尔查询:使用
bool
查询结合must
,should
,must_not
子句进行复杂查询。
GET /_search
{
"query": {
"bool": {
"must": { "match": { "title": "Quick" }},
"must_not": { "match": { "title": "lazy" }},
"should": { "match": { "title": "brown" }}
}
}
}
- 过滤器查询:使用
constant_score
查询结合filter
子句进行不计分的过滤。
GET /_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"user.id": "kimchy"
}
}
}
}
}
12
评论已关闭