• Elasticsearch 笔记


    Elasticsearch 版本 6.2.4

    1. 当对某一type,关闭动态mapping(设为false,非strict)时,插入新的字段是否会存储呢?能否搜索呢?能否排序呢?

      创建索引:

    PUT test/
    {
      "mappings": {
        "_doc": {
          "dynamic":false,
          "properties": {
            "addTime": {
              "type": "integer"
            }
          }
        }
      }
    } 

    查看mapping:

    GET test/_mapping
    

    得到结果:

    {
      "test": {
        "mappings": {
          "_doc": {
            "dynamic": "false",
            "properties": {
              "addTime": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
    

    插入数据:

    POST test/_doc
    {
      "id":1,
      "addTime":"1536476000"
    }
    

    查看是否存入:

    GET test/_search
    

    得到结果:

    {
      "took": 0,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "test",
            "_type": "_doc",
            "_id": "4zJ8vWUBHYQn1k6_tB3V",
            "_score": 1,
            "_source": {
              "id": 1,
              "addTime": "1536476000"
            }
          }
        ]
      }
    }
    

    可以得知是会存储的。

    查看是否可以搜索:

    GET test/_search
    {
      "query": {
        "term": {
          "id": {
            "value": "1"
          }
        }
      }
    }
    

    得到结果:

    {
      "took": 0,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
      }
    }
    

    可以得知是无法搜索的。

    查看是否可以排序:

    GET test/_search
    {
      "sort": [
        {
          "id": {
            "order": "desc"
          }
        }
      ]
    }
    

    得到结果:

    {
      "error": {
        "root_cause": [
          {
            "type": "query_shard_exception",
            "reason": "No mapping found for [id] in order to sort on",
            "index_uuid": "4HMd3wH5SxWqfU-6rEfHyw",
            "index": "test"
          }
        ],
        "type": "search_phase_execution_exception",
        "reason": "all shards failed",
        "phase": "query",
        "grouped": true,
        "failed_shards": [
          {
            "shard": 0,
            "index": "test",
            "node": "y_oEUnmsTqyzHKrkH54d_w",
            "reason": {
              "type": "query_shard_exception",
              "reason": "No mapping found for [id] in order to sort on",
              "index_uuid": "4HMd3wH5SxWqfU-6rEfHyw",
              "index": "test"
            }
          }
        ]
      },
      "status": 400
    }
    

    可以得知是无法排序的。

    结论:当对某一type,关闭动态mapping(设为false,非strict)时,插入新的字段是会被存储的,但不能搜索和排序。

    2. 对于某一字段禁止建立索引之后,搜索结果是否还存在该字段?该字段能否被搜索到?该字段能否用来排序?

       创建索引:

    PUT test/
    {
      "mappings": {
        "_doc": {
          "properties": {
            "addTime": {
              "type": "integer",
              "index":false
            }
          }
        }
      }
    }
    

    查看mapping:

    GET test/_mapping
    

    得到结果:

    {
      "test": {
        "mappings": {
          "_doc": {
            "properties": {
              "addTime": {
                "type": "integer",
                "index": false
              }
            }
          }
        }
      }
    }
    

    插入数据:

    POST test/_doc
    {
      "addTime":1536476000
    }
    

    查看是否存入:

    GET test/_search

    得到结果:

    {
      "took": 0,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "test",
            "_type": "_doc",
            "_id": "5jKPvWUBHYQn1k6_EB0i",
            "_score": 1,
            "_source": {
              "addTime": 1536476000
            }
          }
        ]
      }
    }
    

    可以看到能够存入。

    查看是否能够搜索:

    GET test/_search
    {
      "query": {
        "term": {
          "addTime": {
            "value": 1536476000
          }
        }
      }
    }
    

    得到结果:

    {
      "error": {
        "root_cause": [
          {
            "type": "query_shard_exception",
            "reason": "failed to create query: {
      "term" : {
        "addTime" : {
          "value" : 1536476000,
          "boost" : 1.0
        }
      }
    }",
            "index_uuid": "QNQEwQONTpe5DL2KJal70g",
            "index": "test"
          }
        ],
        "type": "search_phase_execution_exception",
        "reason": "all shards failed",
        "phase": "query",
        "grouped": true,
        "failed_shards": [
          {
            "shard": 0,
            "index": "test",
            "node": "y_oEUnmsTqyzHKrkH54d_w",
            "reason": {
              "type": "query_shard_exception",
              "reason": "failed to create query: {
      "term" : {
        "addTime" : {
          "value" : 1536476000,
          "boost" : 1.0
        }
      }
    }",
              "index_uuid": "QNQEwQONTpe5DL2KJal70g",
              "index": "test",
              "caused_by": {
                "type": "illegal_argument_exception",
                "reason": "Cannot search on field [addTime] since it is not indexed."
              }
            }
          }
        ]
      },
      "status": 400
    }
    

    可以得知不能对未索引(index:false)的字段进行搜索。

    查看是否能够排序:

    GET test/_search
    {
      "sort": [
        {
          "addTime": {
            "order": "desc"
          }
        }
      ]
    }
    

    得到结果:

    {
      "took": 5,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": null,
        "hits": [
          {
            "_index": "test",
            "_type": "_doc",
            "_id": "ryi1xmUBXnKGUBJZj3hG",
            "_score": null,
            "_source": {
              "addTime": 1536476000
            },
            "sort": [
              1536476000
            ]
          }
        ]
      }
    }
    

    得知是可以排序的。

    结论:对于某一字段禁止建立索引之后,该字段的值是可以存入的(存在于搜索结果),但是不能搜索,可以排序。

      

     

       

  • 相关阅读:
    冒泡排序
    数组去重
    DOM 操作入门(二)
    DOM 操作入门(一)----- 在指定位置动态插入节点
    事件流的捕获和冒泡 ---- 事件对象
    call, apply, bind -----【改变this指向的三大利器】
    闭包和垃圾回收机制
    回调函数 -----【全球化下的产业分工】
    处理Excel表格里面的数据
    Web后台获取服务器相关信息
  • 原文地址:https://www.cnblogs.com/xzysaber/p/9614223.html
Copyright © 2020-2023  润新知