elasticsearch 字符串搜索

本文介绍Elasticsearch中的高级搜索语法,包括如何使用条件符号进行精确查询、字符串搜索及特殊字符编码等技巧。通过具体的curl命令示例,帮助读者理解如何在不同场景下高效检索数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串搜索中用到的有:

+ 表示条件都满足(表示“并且”关系)

- 表示必须的不满足(表示“非”关系)

什么都没有则表示 可选(或者关系)

常用的 encoder后用到的自符:%2B表示+  %3A冒号 -表示的还是-  具体的方式在java中可以根据:URLEncoder.encode 来查看

查询所有的索引下的数据信息
duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/_search?pretty'

普通的搜索 表示在所有索引下的数据中 筛选 last_name 为Smith的数据:

duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/_search?q=last_name:Smith&pretty'

普通搜索 表示在所有索引下的数据中 所有字段中包含 Smith的数据:

duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/_search?q=Smith&pretty'

注:在所有的字段中搜索相当于数据被拼接成啦 各个字段相累加的一个 _all的字段

当你索引一个文档,Elasticsearch把所有字符串字段值连接起来放在一个大字符串中,它被索引为一个特殊的字段_all。例如,当索引这个文档:
{
    "tweet":    "However did I manage before Elasticsearch?",
    "date":     "2014-09-14",
    "name":     "Mary Jones",
    "user_id":  1
}
这好比我们增加了一个叫做_all的额外字段值:
"However did I manage before Elasticsearch? 2014-09-14 Mary Jones 1"
若没有指定字段,查询字符串搜索(即q=xxx)使用_all字段搜索。

使用都满足的 并且条件 

这里的+表示或者(链接)的意思[last_name为John 或者 Jane 或者 Douglas]
curl -i -XGET 'http://localhost:9200/_search?q=last_name:(John+Jane+Douglas)&pretty'


这里的 + 表示的是 链接的意思 %2B表示的是并且的意思[last_name为John 或者 Jane 或者 Douglas,并且 last_name为:Smith]
duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/_search?q=first_name:(John+Jane+Douglas)+%2Blast_name:Smith&pretty'


这里的 + 表示的是 链接的意思 %2B表示的是并且的意思[last_name为John 或者 Jane 或者 Douglas,并且 last_name为:Smith 并且 在_all中包含love]
duanlshdeMacBook-Pro:bin duanlsh$ curl -i -XGET 'http://localhost:9200/_search?q=first_name:(John+%2BJane+Douglas)+%2Blast_name:Smith+%2Blove&pretty'

 

转载于:https://my.oschina.net/u/1459447/blog/873414

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值