zoukankan      html  css  js  c++  java
  • elasticsearch中的mapping映射配置与查询典型案例

    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。

  • 相关阅读:
    python模块——socket (实现简单的C/S架构端通信操作CMD)
    English trip -- VC(情景课)3 C Do you have a sister?(maple verstion)
    防止文件被恢复
    English trip -- MC(情景课)3 C Do you have a sister?
    English trip -- VC(情景课)3 B Bamily members
    English trip -- MC(情景课)6 Time
    TCP三次握手(待细研究)
    English trip -- VC(情景课)3 A Family
    English trip -- Phonics 4 元音字母 i
    心情随笔20180718
  • 原文地址:https://www.cnblogs.com/tianjixiaoying/p/4424031.html
Copyright © 2011-2022 走看看