全文检索工具elasticsearch:第一章:理论知识

Docker安装IK中文分词器 下载IK分词器:(可github下载,可以私信要)elasticsearch-analysis-ik-7.12.1.zip 进入容器: 在plugins目录下创建ik文件夹: 退出容器: docker exec -it elasticsearch /bin/bash cd plugins/ mkdir /usr/share/elasticsearch/plugins/ik exit 拷贝下载好的ik分词器压缩包到ik文件夹中: docker cp /home/ubuntu/elastic 阅读详情

搜索

 

什么是搜索, 计算机根据用户输入的关键词进行匹配,从已有的数据库中摘录出相关的记录反馈给用户。 

常见的全网搜索引擎,像百度、谷歌这样的。但是除此以外,搜索技术在垂直领域也有广泛的使用,比如淘宝、京东搜索商品,万芳、知网搜索期刊,csdn中搜索问题贴。也都是基于海量数据的搜索。

   如何处理搜索

    用传统关系性数据库

弊端:  

1、 对于传统的关系性数据库对于关键词的查询,只能逐字逐行的匹配,性能非常差。

2、匹配方式不合理,比如搜索“小密手机” ,如果用like进行匹配, 根本匹配不到。但是考虑使用者的用户体验的话,除了完全匹配的记录,还应该显示一部分近似匹配的记录,至少应该匹配到“手机”。

   专业全文索引是怎么处理的

     全文搜索引擎目前主流的索引技术就是倒排索引的方式。

   传统的保存数据的方式都是

      记录→单词

而倒排索引的保存数据的方式是

   单词→记录

例如

  搜索“红海行动”

但是数据库中保存的数据如图:

那么搜索引擎是如何能将两者匹配上的呢?

基于分词技术构建倒排索引:

首先每个记录保存数据时,都不会直接存入数据库。系统先会对数据进行分词,然后以倒排索引结构保存。如下:

然后等到用户搜索的时候,会把搜索的关键词也进行分词,会把“红海行动”分词分成:红海和行动两个词。

这样的话,先用红海进行匹配,得到id=1和id=2的记录编号,再用行动匹配可以迅速定位id为1,3的记录。

那么全文索引通常,还会根据匹配程度进行打分,显然1号记录能匹配的次数更多。所以显示的时候以评分进行排序的话,1号记录会排到最前面。而2、3号记录也可以匹配到。

   全文检索工具elasticsearch

  lucene与elasticsearch

咱们之前讲的处理分词,构建倒排索引,等等,都是这个叫lucene的做的。那么能不能说这个lucene就是搜索引擎呢?

还不能。lucene只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来的应用。

好比lucene是类似于jdk,而搜索引擎软件就是tomcat 的。

目前市面上流行的搜索引擎软件,主流的就两款,elasticsearch和solr,这两款都是基于lucene的搭建的,可以独立部署启动的搜索引擎服务软件。由于内核相同,所以两者除了服务器安装、部署、管理、集群以外,对于数据的操作,修改、添加、保存、查询等等都十分类似。就好像都是支持sql语言的两种数据库软件。只要学会其中一个另一个很容易上手。

从实际企业使用情况来看,elasticSearch的市场份额逐步在取代solr,国内百度、京东、新浪都是基于elasticSearch实现的搜索功能。国外就更多了 像维基百科、GitHub、Stack Overflow等等也都是基于ES的

 

  elasticSearch的使用场景

  1. 为用户提供按关键字查询的全文搜索功能。
  2. 著名的ELK框架(ElasticSearch,Logstash,Kibana),实现企业海量日志的处理分析的解决方案。大数据领域的重要一份子。

  elasticSearch的安装

全文检索工具elasticsearch:第二章:安装配置

   elasticsearch的基本概念

cluster

整个elasticsearch 默认就是集群状态,整个集群是一份完整、互备的数据。

node

集群中的一个节点,一般只一个进程就是一个node

shard

分片,即使是一个节点中的数据也会通过hash算法,分成多个片存放,默认是5片。

index

相当于rdbms的database, 对于用户来说是一个逻辑数据库,虽然物理上会被分多个shard存放,也可能存放在多个node中。

type

类似于rdbms的table,但是与其说像table,其实更像面向对象中的class , 同一Json的格式的数据集合。

document

类似于rdbms的 row、面向对象里的object

field

相当于字段、属性

 

 

   利用kibana学习 elasticsearch restful api (DSL)

执行bin目录下的kibana程序:

cd /opt/kibana-5.6.4-linux-x86_64/bin

 ./kibana

   es中保存的数据结构

public class  Movie {

 String id;

     String name;

     Double doubanScore;

     List<Actor> actorList;

}

 

public class Actor{

String id;

String name;

}

这两个对象如果放在关系型数据库保存,会被拆成2张表,但是elasticsearch是用一个json来表示一个document。

所以他保存到es中应该是:

{

  “id”:”1”,

  “name”:”operation red sea”,

  “doubanScore”:”8.5”,

  “actorList”:[  

{“id”:”1”,”name”:”zhangyi”},

{“id”:”2”,”name”:”haiqing”},

{“id”:”3”,”name”:”zhanghanyu”}

]

}

 

 对数据的操作增删改查

查看es中有哪些索引

GET /_cat/indices?v

es 中会默认存在一个名为.kibana的索引

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   .kibana sBDZ-v6YQMWx9GaQOmSQQg   1   1          1            0      3.2kb          3.2kb

表头的含义

health

green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)

status

是否能使用

index

索引名

uuid

索引统一编号         

pri

主节点几个

rep

从节点几个

docs.count

文档数

docs.deleted

文档被删了多少

store.size

整体占空间大小

pri.store.size

主节点占

 

增加一个索引

PUT /movie_index

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "movie_index"
}

删除一个索引

      ES 是不删除也不修改任何数据

DELETE /movie_index

{
  "acknowledged": true
}

 新增文档 

格式 :PUT /index/type/id

PUT /movie_index/movie/1

{ "id":1,

  "name":"operation red sea",

  "doubanScore":8.5,

  "actorList":[  

{"id":1,"name":"zhang yi"},

{"id":2,"name":"hai qing"},

{"id":3,"name":"zhang han yu"}

]

}

PUT /movie_index/movie/2

{

  "id":2,

  "name":"operation meigong river",

  "doubanScore":8.0,

  "actorList":[  

{"id":3,"name":"zhang han yu"}

]

}

 

PUT /movie_index/movie/3

{

  "id":3,

  "name":"incident red sea",

  "doubanScore":5.0,

  "actorList":[  

{"id":4,"name":"zhang chen"}

]

}

如果之前没建过index或者type,es 会自动创建。

 直接用id查找

GET movie_index/movie/1

 

 修改—整体替换

和新增没有区别

PUT /movie_index/movie/3

{

  "id":"3",

  "name":"incident red sea",

  "doubanScore":"5.0",

  "actorList":[  

{"id":"1","name":"zhang chen"}

]

}

修改—某个字段

POST movie_index/movie/3/_update

{

  "doc": {

    "doubanScore":"7.0"

  }

}

修改—某个字段和 修改—整体替换二者选一,否则:

 删除一个document

DELETE movie_index/movie/3

{
  "found": true,
  "_index": "movie_index",
  "_type": "movie",
  "_id": "3",
  "_version": 18,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}

搜索type全部数据

GET movie_index/movie/_search

结果

{

  "took": 2,    //耗费时间 毫秒

  "timed_out": false, //是否超时

  "_shards": {

    "total": 5,   //发送给全部5个分片

    "successful": 5,

    "skipped": 0,

    "failed": 0

  },

  "hits": {

    "total": 3,  //命中3条数据

    "max_score": 1,   //最大评分

    "hits": [  // 结果

      {

        "_index": "movie_index",

        "_type": "movie",

        "_id": 2,

        "_score": 1,

        "_source": {

          "id": "2",

          "name": "operation meigong river",

          "doubanScore": 8.0,

          "actorList": [

            {

              "id": "1",

              "name": "zhang han yu"

            }

          ]

        }

          。。。。。。。。

          。。。。。。。。

      }

 

 按条件查询(全部)

GET movie_index/movie/_search

{

  "query":{

    "match_all": {}

  }

}

按分词查询 

GET movie_index/movie/_search

{

  "query":{

    "match": {"name":"red"}

  }

}

注意结果的评分

按分词子属性查询 

GET movie_index/movie/_search

{

  "query":{

    "match": {"actorList.name":"zhang"}

  }

}

 结果:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "movie_index",
        "_type": "movie",
        "_id": "2",
        "_score": 1,
        "_source": {
          "id": 2,
          "name": "operation meigong river",
          "doubanScore": 8,
          "actorList": [
            {
              "id": 3,
              "name": "zhang han yu"
            }
          ]
        }
      },
      {
        "_index": "movie_index",
        "_type": "movie",
        "_id": "1",
        "_score": 1,
        "_source": {
          "id": 1,
          "name": "operation red sea",
          "doubanScore": 8.5,
          "actorList": [
            {
              "id": 1,
              "name": "zhang yi"
            },
            {
              "id": 2,
              "name": "hai qing"
            },
            {
              "id": 3,
              "name": "zhang han yu"
            }
          ]
        }
      }
    ]
  }
}

match phrase

GET movie_index/movie/_search

{

    "query":{

      "match_phrase": {"name":"operation red"}

    }

}

按短语查询,不再利用分词技术,直接用短语在原始数据中匹配

我就不发结果了,太长的博客也不好看。

  fuzzy查询

GET movie_index/movie/_search

{

    "query":{

      "fuzzy": {"name":"rad"}

    }

}

校正匹配分词,当一个单词都无法准确匹配,es通过一种算法对非常接近的单词也给与一定的评分,能够查询出来,但是消耗更多的性能。

 

过滤--查询后过滤

GET movie_index/movie/_search

{

    "query":{

      "match": {"name":"red"}

    },

    "post_filter":{

      "term": {

        "actorList.id": 3

      }

    }

}

先查询后过滤效率慢,好比,我先从全国所有人中先过滤其他省份的留下广东的,再查询比先查询全国所有人再过滤广东的

过滤--查询前过滤(推荐)

GET movie_index/movie/_search

{

    "query":{

        "bool":{

          "filter":[ {"term": {  "actorList.id": "1"  }},

                     {"term": {  "actorList.id": "3"  }}

           ],

           "must":{"match":{"name":"red"}}

         }

    }

}

 

 过滤--按范围过滤

GET movie_index/movie/_search

{

   "query": {

     "bool": {

       "filter": {

         "range": {

            "doubanScore": {"gte": 8}

         }

       }

     }

   }

}

关于范围操作符:

gt

大于

lt

小于

gte

大于等于

lte

小于等于

  排序

GET movie_index/movie/_search

{

  "query":{

    "match": {"name":"red sea"}

  }

  , "sort": [

    {

      "doubanScore": {

        "order": "desc"

      }

    }

  ]

}

这个先按名称后按red sea排序

 分页查询

GET movie_index/movie/_search

{

  "query": { "match_all": {} },

  "from": 1,

  "size": 1

}

 指定查询的字段

GET movie_index/movie/_search

{

  "query": { "match_all": {} },

  "_source": ["name", "doubanScore"]

}

太多了,但我坚持,希望尽最大努力把我知道的全部写出来。

高亮

GET movie_index/movie/_search

{

    "query":{

      "match": {"name":"red sea"}

    },

    "highlight": {

      "fields": {"name":{} }

    }  

}

聚合

取出每个演员共参演了多少部电影

GET movie_index/movie/_search

{

  "aggs": {

    "groupby_actor": {

      "terms": {

        "field": "actorList.name.keyword"  

      }

    }

  }

}

每个演员参演电影的平均分是多少,并按评分排序

GET movie_index/movie/_search

{

  "aggs": {

    "groupby_actor_id": {

      "terms": {

        "field": "actorList.name.keyword" ,

        "order": {

          "avg_score": "desc"

          }

      },

      "aggs": {

        "avg_score":{

          "avg": {

            "field": "doubanScore"

          }

        }

       }

    }

  }

}

 关于mapping的类型

之前说type可以理解为table,那每个字段的数据类型是如何定义的呢

查看看mapping

GET movie_index/_mapping/movie

{
  "movie_index": {
    "mappings": {
      "movie": {
        "properties": {
          "actorList": {
            "properties": {
              "id": {
                "type": "long"
              },
              "name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          },
          "doubanScore": {
            "type": "float"
          },
          "id": {
            "type": "long"
          },
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

 

实际上每个type中的字段是什么数据类型,由mapping定义。

但是如果没有设定mapping系统会自动,根据一条数据的格式来推断出应该的数据格式。

  1. true/false → boolean
  2. 1020  →  long
  3. 20.1 → double
  4. “2017-02-01” → date
  5. “hello world” → text +keyword

默认只有text会进行分词,keyword是不会分词的字符串。

mapping除了自动定义,还可以手动定义,但是只能对新加的、没有数据的字段进行定义。一旦有了数据就无法再做修改了。

注意:虽然每个Field的数据放在不同的type下,但是同一个名字的Field在一个index下只能有一种mapping定义。

 中文分词

elasticsearch本身自带的中文分词,就是单纯把中文一个字一个字的分开,根本没有词汇的概念。但是实际应用中,用户都是以词汇为条件,进行查询匹配的,如果能够把文章以词汇为单位切分开,那么与用户的查询条件能够更贴切的匹配上,查询速度也更加快速。

分词器下载网址:https://github.com/medcl/elasticsearch-analysis-ik

安装

下载好的zip包,请解压后放到 /usr/share/elasticsearch/plugins/

 cp /opt/elasticsearch-analysis-ik-5.6.4.zip  elastic

unzip elastic

rm elastic

然后重启es

service elasticsearch stop

service elasticsearch start

测试使用

使用默认

GET movie_index/_analyze

{  

  "text": "我是中国人"

}

    请观察结果

 使用分词器

GET movie_index/_analyze

{  "analyzer": "ik_smart",

  "text": "我是中国人"

}

请观察结果

   另外一个分词器

    ik_max_word

GET movie_index/_analyze

{  "analyzer": "ik_max_word",

  "text": "我是中国人"

}

请观察结果

能够看出不同的分词器,分词有明显的区别,所以以后定义一个type不能再使用默认的mapping了,要手工建立mapping, 因为要选择分词器。

基于中文分词搭建索引

1、建立mapping

PUT movie_chn

{

  "mappings": {

    "movie":{

      "properties": {

        "id":{

          "type": "long"

        },

        "name":{

          "type": "text"

          , "analyzer": "ik_smart"

        },

        "doubanScore":{

          "type": "double"

        },

        "actorList":{

          "properties": {

            "id":{

              "type":"long"

            },

            "name":{

              "type":"keyword"

            }

          }

        }

      }

    }

  }

}

 

插入数据

PUT /movie_chn/movie/1

{ "id":1,

  "name":"红海行动",

  "doubanScore":8.5,

  "actorList":[  

  {"id":1,"name":"张译"},

  {"id":2,"name":"海清"},

  {"id":3,"name":"张涵予"}

 ]

}

PUT /movie_chn/movie/2

{

  "id":2,

  "name":"湄公河行动",

  "doubanScore":8.0,

  "actorList":[  

{"id":3,"name":"张涵予"}

]

}

 

PUT /movie_chn/movie/3

{

  "id":3,

  "name":"红海事件",

  "doubanScore":5.0,

  "actorList":[  

{"id":4,"name":"张晨"}

]

}

查询测试

GET /movie_chn/movie/_search

{

  "query": {

    "match": {

      "name": "红海战役"

    }

  }

}

 

GET /movie_chn/movie/_search

{

  "query": {

    "term": {

      "actorList.name": "张译"

    }

  }

}

自定义词库

修改/usr/share/elasticsearch/plugins/ik/config/中的IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

        <comment>IK Analyzer 扩展配置</comment>

        <!--用户可以在这里配置自己的扩展字典 -->

        <entry key="ext_dict"></entry>

         <!--用户可以在这里配置自己的扩展停止词字典-->

        <entry key="ext_stopwords"></entry>

        <!--用户可以在这里配置远程扩展字典 -->

         <entry key="remote_ext_dict">http://192.168.67.163/fenci/myword.txt</entry>

        <!--用户可以在这里配置远程扩展停止词字典-->

        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->

</properties>

按照标红的路径利用nginx发布静态资源

在nginx.conf中配置

  server {

        listen  80;

        server_name  192.168.67.163;

        location /fenci/ {

           root es;

    }

   }

 

并且在/usr/local/nginx/下建/es/fenci/目录,目录下加myword.txt

myword.txt中编写关键词,每一行代表一个词。

 

然后重启es服务器,重启nginx。

在kibana中测试分词效果

更新完成后,es只会对新增的数据用新词分词。历史数据是不会重新分词的。如果想要历史数据重新分词。需要执行:

POST movies_index_chn/_update_by_query?conflicts=proceed

有点长了,分章节吧,第三章继续写。

【ElasticSearch-基础篇】ES高级查询Query DSL全文检索 阅读详情

相关推荐

elasticsearch-analysis-ik-7.12.1.zip

IK分词器-7.12.1

Elasticsearch(二)

ELK:标准化日志平台E:Elasticsearch 作为日志存储和分析框架,L:Logstash 作为日志采集框架,获取日志存储到Es,K:Kibana 可视化网站,可以通过网页操作ES。kibana:是一个免费且开放的用户界面,能够让对 Elasticsearch 数据进行可视化,还可以进行各种操作,跟踪查询负载,到理解请求如何流经整个应用,都能轻松完成。需要和es的版本对应,es:7.12.1 所以:ik:V7.12.1。这个错误意思:当前默认可用内存太小了,需要设置的大一点。开放端口号:5601。

eric_chen1990的博客 583

elasticsearch-analysis-ik-7.12.1

IK Analysis for Elasticsearch

你必须会的Docker安装ElasticSearch教程

Docker安装ElasticSearch 1 安装说明 在平时工作的时候,开发环境大多数会安装单机ElasticSearch,但生产环境基本会安装ElasticSearch集群版,所以我们接下来实现一下ElasticSearch单机安装,下一节实现集群安装,但安装也大多数采用Docker安装。不过中文搜索,会实现分词器集成,可以采用IK分词器。ElasticSearch采用Kibana实现数据可视化分析也是当前主流,所以我们除了安装ElasticSearch和IK分词器外,还需要安装Kibana。 安装实

scmagic的博客 5119

4、设备树的处理(1)

其实到第4节才写设备树的问题完全是因为忘记了,之前有一个版本是先关闭了设备树的,习惯性的认为设备树已经处理完了,失误了!!!前文说过,这个系统是依着荣品的开发板和核心板来的,使用的是5.1内核的SDK。它的SDK里是开发板全功能的,所以设备树也是的。

wsen2012的博客 417

FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)

本文目的,最终可以完整推算两种变换 Clarke 变换 首先先看我们需要用到的两种坐标系 1. 自然坐标系 abcabcabc 我们知道,通过三相逆变电路,我们可以画出一个自然坐标系 abcabcabc ,即三相电压的坐标系,通入的电流在这三轴坐标系中变化: 将三个矢量相加合并在一起就如下图所展现: 使用三个坐标轴来表示十分的麻烦与不直观,因为其是非正交的,于是乎我们想要将其转化成使用两个正交的坐标轴来表示,于是乎便有了 Clarke变换。 Clarke 变换的作用: 将基于三轴二维的定子静止坐标系的各

Wilson Huang的博客 3万+

全文检索工具elasticsearch:第一章:理论知识,面试一问Kafka就心慌

一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。

碧海朝天素 1069

ArcGIS山体坡度、坡向分析

本篇文章主要记录自己在对山体坡向及坡度分析中的一些操作。

Belence_zhao的博客 7412

全文检索工具elasticsearch:第一章:理论知识(1)

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

2401_84006757的博客 1175

Axure RP 9在Windows 11环境下的高效安装与配置指南

本文提供Axure RP 9在Windows 11系统下的详细安装步骤与配置指南。针对Win11安全特性,从获取官方安装资源、调整系统权限,到定制化安装路径、精准汉化及性能优化,系统性地解决了安装闪退、汉化失败、运行卡顿等常见问题,确保用户获得稳定流畅的原型设计体验。

mango的博客 480

tcmalloc(高并发内存池)简化版讲解-项目

高清发不上去,私我发高清,项目完整代码@我。

2201_75352618的博客 911

ES(Elasticsearch 全文检索)

对文档的内容进行分词,对词条创建索引,记录词条所在的文档信息根据词条查询到文档的id 从而查到文档。es是面向文档存储的可以是数据库中的一条商品数据订单信息,文档会被序列化为json后存储在es中。根据文档的id创建索引 查询词条必须先找到文档完了判断是否包含词条。删:DELETE /indexName/_doc/docId。增:POST /indexName/_doc/docId。差:GET /indexName/_doc/docId。es:擅长海量数据的搜索、分析、计算。

不瘦25斤不改名 2839

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3176

一.全文检索ElasticSearch经典入门-全文索引&ES概述&ES安装&Kibana安装

前言 为什么要写这个系列的文章呢,基于两个原因,一是在为企业招人的时候发现很多是工作多年的求职者都还没有接触过全文检索引擎,二是应朋友请求希望我写一写ElasticSearch(简称ES)的技术文章,该系列文章将分为如下几个部分:1.ES原理与安装;2.ES的基础用法 ;3.Java代码进行ES实战 ;4.ES的面试题讲解,喜欢的话请给个好评。 全文检索概述 我们在网络上的大部分搜索服务都用到了全文检索技术,全文检索的应用场景随处可见,招聘网站的职位搜索,电商网站的商品搜索,百度搜搜等等,这种业务场景往往意

墨家巨子@俏如来 9664

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5324

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2158

全文检索 Elasticsearch(简称es)

全文检索 Elasticsearch 研究 1. ElasticSearch 介绍 1.1 介绍 **Elasticsearch**是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Py...

CORN的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ElasticSearch 全文搜索引擎;ES 搜索引擎

默认情况下,每个节点都会被安排加入到一个叫做 “elasticsearch” 的集群中,这意味着,如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做 “elasticsearch” 的集群中。当然我们下载的 ElasticSearch 中包含了一个 jdk ,如果你的 jdk 版本不兼容,可以直接将你 JAVA_HOME 变量改为 ElasticSearch 中的 jdk 目录即可(建议备份原理的 JAVA_HOME,因为你之前的项目都是用的原来的)

lhorse003的博客 6045

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ElasticSearch 认识和安装ES

es是一个分布式、高性能的搜索引擎,广泛应用于大数据检索、日志分析、实时搜索等场景。与传统数据库相比,ElasticSearch 对于大规模数据的处理具有显著优势,特别是模糊查询、分词分析、语义理解等复杂搜索任务。本章内容主要是介绍了 Elasticsearch 的基础知识、它的起源以及如何安装和配置 Elasticsearch 和 Kibana。安装过程中使用 Docker 是一种方便快捷的方式,可以轻松启动单机模式的 Elasticsearch 服务,并结合 Kibana 进行可视化操作。

2301_80093566的博客 1849

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ElasticSearch内容分享(四):ES搜索引擎

但是elasticsearch将来一定是集群,例如我集群有5个节点,我要查询TOP1000的数据,并不是每个节点查询200条就可以了。那每个节点都要查询10000条?因此要想获取整个集群的TOP1000,必须先查询出每个节点的TOP1000,汇总结果后,重新排名,重新截取TOP1000。可以看到,API与其它查询的差别同样是在查询条件的构建,QueryBuilders,结果解析等其他代码完全不变。每一个不同的字段,其查询的条件、方式都不一样,必须是多个不同的查询,而要组合这些查询,就必须用bool查询了。

之乎者也·的博客 1369

Bitnami Containers搜索引擎:Elasticsearch+OpenSearch全文检索

还在为搭建搜索引擎环境而烦恼?Bitnami Containers提供开箱即用的Elasticsearch和OpenSearch容器镜像,让你5分钟搞定全文检索系统! ## 为什么选择Bitnami Secure Images? Bitnami Secure Images(BSI)是基于VMware Photon Linux的安全加固镜像,具有以下优势: - 🔒 **零漏洞**:经过安全加

gitblog_00796的博客 1123
上一篇: Redis数据结构存储系统:第二章:如何使用
下一篇: 全文检索工具elasticsearch:第二章:安装配置
Java程序员廖志伟
Java程序员廖志伟 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 1902原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值