1.查询所有
POST /lagou-company-index/_search
{
"query":{
"match_all": {}
}
}
2.匹配搜索
将查询的文本分词,有一个命中即会返回
{
"query": {
"match": {
"positionName": "经理"
}
}
}
3.短语搜索
什么是短语
一个被认定为和短语 quick brown fox 匹配的文档,必须满足以下这些要求:
quick 、 brown 和 fox 需要全部出现在域中。
brown 的位置应该比 quick 的位置大 1 。
fox 的位置应该比 quick 的位置大 2 。
如果以上任何一个选项不成立,则该文档不能认定为匹配。
{
"query": {
"match_phrase": {
"positionName": "社区经理"
}
}
}
这个返回空,因为没有positionName包含完整的社区经理,es库里只有社区运营经理和产品经理,社区运营经理的经理位置比社区大2,不是大1,所以匹配不上。
4.query_string 查询
Query String Query提供了无需指定某字段而对文档全文进行匹配查询的一个高级查询,同时可以指定在
哪些字段上进行匹配。
# 默认 和 指定字段
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query" : "2699"
}
}
}
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query" : "2699",
"default_field" : "title"
}
}
}
# 逻辑查询
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query" : "手机 OR 小米",
"default_field" : "title"2.2.4 多字段匹配搜索(multi match query)
如果你需要在多个字段上进行文本搜索,可用multi_match 。multi_match在 match的基础上支持对多
个字段进行文本查询。
还可以使用*匹配多个字段:
}
}
}
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query" : "手机 AND 小米",
"default_field" : "title"
}
}
}
# 模糊查询
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query" : "大米~1",
"default_field" : "title"
}
}
}
# 多字段支持
GET /lagou-property/_search
{
"query": {
"query_string" : {
"query":"2699",
"fields": [ "title","price"]
}
}
}
5.词条级搜索(term-level queries)
{
"query": {
"term": {
"positionName": "经理"
}
}
}
这个查询查不到任何信息,虽然es库里有产品经理,社区经理等等,我们使用分析器看一下:
http://localhost:9200/position/_analyze/
{
"field": "positionName",
"text": "产品经理"
}
结果:
{
"tokens": [
{
"token": "产",
"start_offset": 0,
"end_offset": 1,
"type": "<IDEOGRAPHIC>",
"position": 0
}
,
{
"token": "品",
"start_offset": 1,
"end_offset": 2,
"type": "<IDEOGRAPHIC>",
"position": 1
}
,
{
"token": "经",
"start_offset": 2,
"end_offset": 3,
"type": "<IDEOGRAPHIC>",
"position": 2
}
,
{
"token": "理",
"start_offset": 3,
"end_offset": 4,
"type": "<IDEOGRAPHIC>",
"position": 3
}
]
}
产品经理被分为了四个单独的词,没有完全等于经理的词,所以没有结果返回