elasticsearch中的mapping映射配置示例
    
    比如要搭建个中文新闻信息的搜索引擎,新闻有"标题"、"内容"、"作者"、"类型"、"发布时间"这五个字段;
    
    我们要提供"标题和内容的检索"、"排序"、"高亮"、"统计"、"过滤"等一些基本功能。
    
    ES提供了smartcn的中文分词插件,测试的话建议使用IK分词插件。
    
    内容中properties对应mapping里的内容,里面5个字段。
    
    type指出字段类型、内容、标题字段要进行分词和高亮因此要设置分词器和开启term_vector。
    
    {
    
      "news": {
    
        "properties": {
    
          "content": {#内容
    
            "type": "string",  #字段类型
    
            "store": "no", #是否存储
    
            "term_vector": "with_positions_offsets",#开启向量,用于高亮
    
            "index_analyzer": "ik",#索引时分词器
    
            "search_analyzer": "ik"#搜索时分词器
    
          },
    
          "title": {
    
            "type": "string",
    
            "store": "no",
    
            "term_vector": "with_positions_offsets",
    
            "index_analyzer": "ik",
    
            "search_analyzer": "ik",
    
            "boost": 5
    
          },
    
          "author": {
    
            "type": "string",
    
            "index": "not_analyzed"#该字段不分词
    
          },
    
          "publish_date": {
    
            "type": "date",
    
            "format": "yyyy/MM/dd",
    
            "index": "not_analyzed"#该字段不分词
    
          },
    
          "category": {
    
            "type": "string",
    
            "index": "not_analyzed"#该字段不分词
    
          }
    
        }
    
      }
    
    }
    
    
    查询示例:内容包括几个部分:
    
    
    分页:from/size、字段:fields、排序sort、查询:query、过滤:filter、高亮:highlight、统计:facet
    
    {
    
      "from": 0,
    
      "size": 10,
    
      "fields": [
    
        "title",
    
        "content",
    
        "publish_date",
    
        "category",
    
        "author"
    
      ],
    
      "sort": [
    
        {
    
          "publish_date": {
    
            "order": "asc"
    
          }
    
        },
    
        "_score"
    
      ],
    
      "query": {
    
        "bool": {
    
          "should": [
    
            {
    
              "term": {
    
                "title": "中国"
    
              }
    
            },
    
            {
    
              "term": {
    
                "content": "中国"
    
              }
    
            }
    
          ]
    
        }
    
      },
    
      "filter": {
    
        "range": {
    
          "publish_date": {
    
            "from": "2010/07/01",
    
            "to": "2010/07/21",
    
            "include_lower": true,
    
            "include_upper": false
    
          }
    
        }
    
      },
    
      "highlight": {
    
        "pre_tags": [
    
          "<tag1>",
    
          "<tag2>"
    
        ],
    
        "post_tags": [
    
          "</tag1>",
    
          "</tag2>"
    
        ],
    
        "fields": {
    
          "title": {},
    
          "content": {}
    
        }
    
      },
    
      "facets": {
    
        "cate": {
    
          "terms": {
    
            "field": "category"
    
          }
    
        }
    
      }
    
    }
    
    结果包含需要的几个部分。
    
    值得注意的是,facet的统计是命中的结果进行统计,filter是对结果进行过滤,filter不会影响facet,如果要统计filter掉的的就要使用filter facet。
  


 
					 
					