ElasticSearch Full Text Queries API

Posted 一颗小蚕豆 期待发芽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch Full Text Queries API相关的知识,希望对你有一定的参考价值。

一、matchAllQuery 查询所有
match query 全文查询的标准查询,包括模糊匹配和短语或近距离查询,match查询接受文本/数字/日期,分析他们,并构件查询。
matchQuery(
        "name",  "kimchy elasticsearch"); 
{
  "query": {
    "match": {
        "content" : {
            "query" : "我的宝马多少马力"
        }
    }
  }
}

上面的查询匹配就会进行分词,比如"宝马多少马力"会被分词为"宝马 多少 马力", 所有有关"宝马 多少 马力", 那么所有包含这三个词中的一个或多个的文档就会被搜索出来。
并且根据lucene的评分机制(TF/IDF)来进行评分。

二、multi_match query  对多字段执行相同查询
multiMatchQuery(
        "kimchy elasticsearch", "user", "message");  
{
    "multi_match": {
        "query":                "Quick brown fox",
        "type":                 "best_fields", 
        "fields":               [ "title", "body" ],
        "tie_breaker":          0.3,
        "minimum_should_match": "30%" 
    }
}
三、query_string query 字符查询
queryStringQuery("+kimchy -elasticsearch");

{
"query_string":{
"default_field":"name",
"query":"(this AND that) OR thu*"
}

}
query: 需要查询的具体内容
default_field: 查询的字段
默认是_all,即对所有字段进行查询。

支持多字段——"fields" : ["age", "name"],fields中只要有一个字段满足query的条件即可匹配查询。

支持一些简单的wildcard写法。比如fields:[“nam*”]即任何nam开头的字段,注意:如果field与query写在一起比如”query”:”name:obama”,要使用wildcard需要转义--->”query”:”nam\\*:obama”

四、simple_query_string
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html















以上是关于ElasticSearch Full Text Queries API的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch Query DSL之全文检索(Full text queries)下篇

elasticsearch-查询基础篇

elasticsearch-查询基础篇

elasticsearch 获取匹配属于哪个字段

ElasticSearch 基础 - Mapping

ElasticSearch 字段类型介绍