es查用查询

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": "",

"position": 0

}

,

{

"token": "品",

"start_offset": 1,

"end_offset": 2,

"type": "",

"position": 1

}

,

{

"token": "经",

"start_offset": 2,

"end_offset": 3,

"type": "",

"position": 2

}

,

{

"token": "理",

"start_offset": 3,

"end_offset": 4,

"type": "",

"position": 3

}

]

}

产品经理被分为了四个单独的词,没有完全等于经理的词,所以没有结果返回

你可能感兴趣的:(es查用查询)