1.一般查询

    GET /test1/_search
    {
    “query”: {“match”: {
    “field”:”value”
    }}
    }

    多字段查询 multi match

    {
    “query”: {
    “multi_match”: {
    “query”: “test”,
    “fields”: [“test_field”, “test_field1”]
    }
    }
    }

    范围查询
    {
    “query”: {
    “range”: {
    “age”: {
    “gte”: 30
    }
    }
    }
    }

    term查询

    {
    “query”: {
    “term”: {
    “test_field”: “test hello”
    }
    }
    }

    terms 查询
    {
    “query”: { “terms”: { “tag”: [ “search”, “full_text”, “nosql” ] }}
    }

    2.多索引查询

    GET /test1,test/_search
    {
    “query”: {“match_all”: {}}
    }

    3.多条件组合查询 bool查询

    4.filter与query 查询

    {
    “query”: {
    “bool”: {
    “must”: [
    {
    “match”: {
    “join_date”: “2016-01-01”
    }
    }
    ],
    “filter”: {
    “range”: {
    “age”: {
    “gte”: 30
    }
    }
    }
    }
    }
    }

    filter与query对比

    filter,仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响

    query,会去计算每个document相对于搜索条件的相关度,并按照相关度进行排序

    7.排序

    9.boost 加权

    10 match_phrase 了解什么是分词后的position slop的含义

    11 ngram
    使用 ngram将每个单词都进行进一步的分词切分,用切分后的ngram来实现前缀搜索推荐功能

    {
    “settings”: {
    “analysis”: {
    “filter”: {
    “autocomplete_filter”: {
    “type”: “ngram”,
    “min_gram”: 1,
    “max_gram”: 20
    }
    },
    “analyzer”: {
    “autocomplete”: {
    “type”: “custom”,
    “tokenizer”: “standard”,
    “filter”: [
    “lowercase”,
    “autocomplete_filter”
    ]
    }
    }
    }
    }
    }

    12: fuzzy查询

    13 :搜索建议

    PUT /hot_word_4
    {
    “settings”: {
    “number_of_replicas”: 0,
    “number_of_shards”: 1,
    “index”:{
    “max_ngram_diff”:19
    },
    “analysis”: {
    “analyzer”: {
    “ngram_analyzer”:{
    “type”:”custom”,
    “tokenizer”:”keyword”,
    “filter”:[
    “ngram_filter”,
    “lowercase”,
    “pinyin_filter”
    ]
    },
    “edge_ngram_analyzer”:{
    “type”:”custom”,
    “tokenizer”:”keyword”,
    “filter”:[
    “edge_ngram_filter”,
    “lowercase”,
    “pinyin_filter”
    ]
    },
    “ik_smart_pinyin”:{
    “type”:”custom”,
    “tokenizer”:”ik_smart”,
    “filter”:”pinyin_filter”
    }
    },
    “filter”: {
    “ngram_filter”: {
    “type”: “ngram”,
    “min_gram”: 2,
    “max_gram”: 20
    },
    “edge_ngram_filter”: {
    “type”: “edge_ngram”,
    “min_gram”: 2,
    “max_gram”: 20
    },
    “pinyin_filter”:{
    “type”:”pinyin”,
    “keep_full_pinyin”:false,
    “keep_joined_full_pinyin”:true,
    “keep_none_chinese_in_first_letter”:false,
    “none_chinese_pinyin_tokenize”:false
    }
    }
    }
    },
    “mappings”: {
    “properties”: {
    “title1”:{
    “type”: “text”,
    “analyzer”: “edge_ngram_analyzer”
    },
    “title2”:{
    “type”: “text”,
    “analyzer”: “ngram_analyzer”
    }
    }
    }
    }