Elasticsearch full-text search

1, matching the query (match)

  • matchQueries main scenario is full-text search;
// 1,初始化数据
DELETE /my_index 

PUT /my_index
{ "settings": { "number_of_shards": 1 }} 

POST /my_index/my_type/_bulk
{ "index": { "_id": 1 }}
{ "title": "The quick brown fox" }
{ "index": { "_id": 2 }}
{ "title": "The quick brown fox jumps over the lazy dog" }
{ "index": { "_id": 3 }}
{ "title": "The quick brown fox jumps over the quick dog" }
{ "index": { "_id": 4 }}
{ "title": "Brown fox brown dog" }


// 2,match 单个词查询
GET /my_index/my_type/_search
{
  "query":{
    "match":{
      "title":"QUICK!"
    }
  }
}


// 3,match 多词查询
GET /my_index/my_type/_search
{
  "query":{
    "match":{
      "title":"BROWN DOG!"
    }
  }
}

// 3.1 operator 操作符,默认值为or
GET /my_index/my_type/_search
{
  "query":{
    "match":{
      "title":{
        "query":"BROWN DOG!",
        "operator":"and"
        
      }
    }
  }
}

// 3.2 minimum_should_match 最小匹配参数
GET /my_index/my_type/_search
{
  "query":{
    "match":{
      "title":{
        "query":"quick brown dog",
        "minimum_should_match": "75%"
        
      }
    }
  }
}

2, the combination of query

// 组合查询
GET /my_index/my_type/_search
{
  "query":{
    "bool":{
      "must":{"match":{"title":"quick"}},
      "must_not":{"match":{"title":"lazy"}},
      "should":[
        {"match":{"title":"brown"}},
        {"match":{"title":"dog"}}
        ]
    }
  }
}

// 备注:should语句,一个文档不必包含“brown”或“dog”这两个词项,但如果一旦包含,它的相关性会提高。

// 控制精度(minimum_should_match)
GET /my_index/my_type/_search
{
  "query":{
    "bool":{
      "should":[
        {"match":{"title":"brown"}},
        {"match":{"title":"fox"}},
        {"match":{"title":"dog"}}
        ],
        "minimum_should_match": 2
    }
  }
}

3, the query lift weights

// boost 控制查询语句的相对权重,默认值为1,大于1会提升一个语句的相对权重
GET /_search
{
    "query": {
        "bool": {
            "must": {
                "match": {  
                    "content": {
                        "query":    "full text search",
                        "operator": "and"
                    }
                }
            },
            "should": [
                { "match": {
                    "content": {
                        "query": "Elasticsearch",
                        "boost": 3 
                    }
                }},
                { "match": {
                    "content": {
                        "query": "Lucene",
                        "boost": 2 
                    }
                }}
            ]
        }
    }
}

4, control analysis

// 1,新增字段,并配置分析器
PUT /my_index/_mapping/my_type
{
    "my_type": {
        "properties": {
            "english_title": {
                "type":     "text",
                "analyzer": "english"
            }
        }
    }
}


// 2,validate-query API 分析查询过程
GET /my_index/my_type/_validate/query?explain
{
  "query":{
    "bool":{
      "should":[
        {"match":{"title":"Foxes"}},
        {"match":{"english_title": "Foxes"}}
        ]
    }
  }
}



References:
- FORBIDDEN, / 12 / index the Read-only / the allow the Delete (API)

Guess you like

Origin www.cnblogs.com/linkworld/p/12030686.html