• (51)ElasticSearch之query string查询及copy_to的使用


      1、准备数据

    PUT /myindex/article/1
    {
      "post_date":"2018-05-10",
      "title":"Java",
      "content":"java is the best language",
      "author_id":119
    }
    
    PUT /myindex/article/2
    {
      "post_date":"2018-05-12",
      "title":"html",
      "content":"I like html",
      "author_id":120
    }
    
    PUT /myindex/article/3
    {
      "post_date":"2018-05-16",
      "title":"es",
      "content":"Es is distributed document store",
      "author_id":110
    }

      2、操作演示

      1)查询myindex索引下所有文档

    GET /myindex/article/_search

      查询结果

    {
      "took": 2,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 3,
        "max_score": 1,
        "hits": [
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "2",
            "_score": 1,
            "_source": {
              "post_date": "2018-05-12",
              "title": "html",
              "content": "I like html",
              "author_id": 120
            }
          },
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "1",
            "_score": 1,
            "_source": {
              "post_date": "2018-05-10",
              "title": "Java",
              "content": "java is the best language",
              "author_id": 119
            }
          },
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "3",
            "_score": 1,
            "_source": {
              "post_date": "2018-05-16",
              "title": "es",
              "content": "Es is distributed document store",
              "author_id": 110
            }
          }
        ]
      }
    }

      2)查询myindex索引下日期是2018-05-10的文档。日期类型不会分词,要精确查询

    GET /myindex/article/_search?q=post_date:2018-05-10

      查询结果

    {
      "took": 31,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "1",
            "_score": 1,
            "_source": {
              "post_date": "2018-05-10",
              "title": "Java",
              "content": "java is the best language",
              "author_id": 119
            }
          }
        ]
      }
    }

      3)查询myindex索引下content字段中含有html的文档

    GET /myindex/article/_search?q=content:html

      查询结果

    {
      "took": 12,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "2",
            "_score": 0.2876821,
            "_source": {
              "post_date": "2018-05-12",
              "title": "html",
              "content": "I like html",
              "author_id": 120
            }
          }
        ]
      }
    }

      4)查询myindex索引下,字段中含有html或者document的文档,不指定字段,所有字段都会对比,性能低

    GET /myindex/article/_search?q=html,document

      查询结果

    {
      "took": 19,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 2,
        "max_score": 0.2876821,
        "hits": [
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "2",
            "_score": 0.2876821,
            "_source": {
              "post_date": "2018-05-12",
              "title": "html",
              "content": "I like html",
              "author_id": 120
            }
          },
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "3",
            "_score": 0.2876821,
            "_source": {
              "post_date": "2018-05-16",
              "title": "es",
              "content": "Es is distributed document store",
              "author_id": 110
            }
          }
        ]
      }
    }

      3、使用copy_to字段解决低性能问题

      1)该字段是把其他字段中的值,以空格为分隔符组成一个大字符串,然后被分析和索引但是不存储,也就是说它能被查询,但是不能被取回显示。

      2)注意copy_to指向的字段,字段类型要为text

      3)当没有指定查询的字段时,就会从copy_to字段中查询

      需要自己创建mapping,不能用默认的,下面创建mapping,先要删除掉之前的

    DELETE myindex
    PUT /myindex PUT /myindex/article/_mapping { "properties":{ "post_date":{ "type":"date" }, "title":{ "type":"text", "copy_to":"fullcontents" }, "content":{ "type":"text", "copy_to":"fullcontents" }, "author_id":{ "type":"integer" } } }

      准备数据,还用前面的

    PUT /myindex/article/1
    {
      "post_date":"2018-05-10",
      "title":"Java",
      "content":"java is the best language",
      "author_id":119
    }
    
    PUT /myindex/article/2
    {
      "post_date":"2018-05-12",
      "title":"html",
      "content":"I like html",
      "author_id":120
    }
    
    PUT /myindex/article/3
    {
      "post_date":"2018-05-16",
      "title":"es",
      "content":"Es is distributed document store",
      "author_id":110
    }

      查询:myindex索引下含有html、document的文档

    GET /myindex/article/_search?q=fullcontents:html,document

      查询结果

    {
      "took": 5,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 2,
        "max_score": 0.39556286,
        "hits": [
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "2",
            "_score": 0.39556286,
            "_source": {
              "post_date": "2018-05-12",
              "title": "html",
              "content": "I like html",
              "author_id": 120
            }
          },
          {
            "_index": "myindex",
            "_type": "article",
            "_id": "3",
            "_score": 0.2876821,
            "_source": {
              "post_date": "2018-05-16",
              "title": "es",
              "content": "Es is distributed document store",
              "author_id": 110
            }
          }
        ]
      }
    }
  • 相关阅读:
    微软推送Win10致全球网络负担增大,中国网友表示毫无压力
    hdu4336Card Collector 概率dp+状态压缩
    利用JAVA反射机制实现调用私有方法
    【D3 API 中文手冊】
    Android线程池(二)——ThreadPoolExecutor及其拒绝策略RejectedExecutionHandler使用演示样例
    输入3个整数,按由小到大的顺序输出(使用指针)
    【直接拿来用のandroid公共代码模块解析与分享】の Notification和NotificationManager
    HDU 1533 Going Home(KM完美匹配)
    项目期复习:JS操作符,弹窗与调试,凝视,数据类型转换
    Oracle11gR2 Windows 7 64bit and PL/SQL Developer排错
  • 原文地址:https://www.cnblogs.com/javasl/p/12659280.html
Copyright © 2020-2023  润新知