当前位置: 首页 > news >正文

wordpress微信查看密码上海seo网站建设

wordpress微信查看密码,上海seo网站建设,网络营销方案300字,seo分析报告怎么写1.简介 在此示例中#xff0c;我们将演示如何使用Elasticsearch #xff0c; Elasticsearch是一个基于Apache Lucene的分布式自由文本搜索和分析数据库引擎#xff0c;具有一个基于maven的简单Java客户端。 在撰写本文时#xff0c;我们将使用最新版本的Elasticsearch我们将演示如何使用Elasticsearch Elasticsearch是一个基于Apache Lucene的分布式自由文本搜索和分析数据库引擎具有一个基于maven的简单Java客户端。 在撰写本文时我们将使用最新版本的Elasticsearch即ES v6.1.2。 对于此示例我们使用以下技术 Maven 3 Java 8 Elasticsearch 6.1.2 Elasticsearch因其通过RESTful API进行通信的能力而闻名。 这意味着我们将使用API​​以及HTTP方法如GETPOSTPUT和DELETE与数据库进行交互。 它是一个高度可扩展的分布式数据库可使用Apache Lucene出色地实现。 有关Elasticsearch的其他一些功能包括 Elasticsearch的总依赖项大小仅为300 KB非常轻巧 Elasticsearch仅专注于查询的性能。 这意味着无论对数据库执行什么操作它们都经过高度优化和可扩展 这是一个高度容错的系统。 如果集群中有单个Elasticsearch节点死亡则主服务器将非常Swift地确定问题并将传入的请求尽快路由到新节点 Elasticsearch的专长在于可索引文本数据可根据标记和过滤器进行搜索 尽管当使用分布式自由文本搜索和分析引擎时Elasticsearch是一个不错的选择但在进行其他一些操作时它可能不是最适合的数据库 计算总数和平均值之类的运算 使用回滚执行事务查询 管理在多个给定条件下唯一的记录 这意味着Elasticsearch是一个基于用例的高度数据库但就其自己的领域而言却是一个出色的数据库。 2.先决条件 因为maven是Java工具所以您必须在计算机上安装Java才能继续。 您可以在此处下载Java。 一旦在系统上安装了Java就必须安装maven。 您可以从此处下载Maven。 最后您需要安装Elasticsearch。 您可以从此处下载它然后按照适用于您的操作系统的步骤进行操作。 请注意本课程将使用v6.1.2。 现在其他版本可能会以完全相同的方式工作。 您可以通过在浏览器中打开以下URL来验证ES是否正在运行 localhost:9200 您应该得到如下响应 {name: wKUxRAO,cluster_name: elasticsearch,cluster_uuid: gvBXz7xsS5W4zlZuiADelw,version: {number: 6.1.2,build_hash: 5b1fea5,build_date: 2018-01-10T02:35:59.208Z,build_snapshot: false,lucene_version: 7.1.0,minimum_wire_compatibility_version: 5.6.0,minimum_index_compatibility_version: 5.0.0},tagline: You Know, for Search } 请注意 elasticsearch是Elasticsearch中的默认集群名称。 3.项目设置 我们将使用许多Maven原型之一为我们的示例创建一个示例项目。 要创建项目请在将用作工作空间的目录中执行以下命令 mvn archetype:generate -DgroupIdcom.javacodegeeks.example -DartifactIdjcg-elasticsearch-example -DarchetypeArtifactIdmaven-archetype-quickstart -DinteractiveModefalse 如果您是第一次运行maven则完成生成命令将花费几秒钟因为maven必须下载所有必需的插件和工件才能完成生成任务。 请注意现在您将在所选目录中拥有一个与artifactId同名的新目录。 现在随时在您喜欢的IDE中打开项目。 4. Maven依赖 首先我们需要在项目中添加适当的Maven依赖项。 我们将以下依赖项添加到我们的pom.xml文件中 pom.xml propertieselasticsearch.version6.1.2/elasticsearch.versionjackson.version2.9.4/jackson.versionjava.version1.8/java.version /propertiesdependenciesdependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion${elasticsearch.version}/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion${jackson.version}/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion${jackson.version}/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency /dependencies 在此处找到最新的Elasticsearch依赖项。 请注意我们在代码中仅将Jackson用作Java的标准JSON库。 5.进行数据库查询 现在我们准备开始构建项目并向其中添加更多组件。 5.1建立模型 我们将在我们的项目中添加一个非常简单的模型即Person。 它的定义将非常标准例如 人.java public class Person {private String personId;private String name;//standard getters and settersOverridepublic String toString() {return String.format(Person{personId%s, name%s}, personId, name);} } 为了简洁起见我们省略了标准的getter和setter方法但是由于Jackson在对象的序列化和反序列化过程中使用它们因此必须将它们制成。 5.2定义连接参数 我们将使用默认的连接参数与Elasticsearch建立连接。 默认情况下ES使用两个端口9200和9201。 连接参数 //The config parameters for the connection private static final String HOST localhost; private static final int PORT_ONE 9200; private static final int PORT_TWO 9201; private static final String SCHEME http;private static RestHighLevelClient restHighLevelClient; private static ObjectMapper objectMapper new ObjectMapper();private static final String INDEX persondata; private static final String TYPE person; 除了连接配置参数外我们还在上面定义了索引参数以标识我们的Person数据的存储位置。 如以上参数所述Elasticsearch使用两个端口9200和9201。第一个端口9200由Elasticsearch Query Server使用我们可以使用它们通过RESTful API直接查询数据库。 REST服务器使用第二个端口9201 外部客户端可以通过该端口连接并执行操作。 5.3建立连接 我们将提供一种方法来建立与Elasticsearch数据库的连接。 与数据库建立连接时我们必须提供两个端口因为只有这样我们的应用程序才能连接到Elasticsearch服务器并且我们将能够执行数据库操作。 这是建立连接的代码 用于获取连接对象的Singleton方法 /*** Implemented Singleton pattern here* so that there is just one connection at a time.* return RestHighLevelClient*/ private static synchronized RestHighLevelClient makeConnection() {if(restHighLevelClient null) {restHighLevelClient new RestHighLevelClient(RestClient.builder(new HttpHost(HOST, PORT_ONE, SCHEME),new HttpHost(HOST, PORT_TWO, SCHEME)));}return restHighLevelClient; } 请注意我们在此处实现了Singleton Design模式 这样就不会为ES建立多个连接从而节省了大量内存。 由于存在RestHighLevelClient 因此与Elasticsearch的连接是线程安全的。 初始化此连接的最佳时间是在应用程序请求或向客户端发出第一个请求时。 初始化此连接客户端后即可用于执行任何受支持的API。 5.4关闭连接 就像在旧版本的Elasticsearch中一样我们使用TransportClient并在完成查询后将其关闭并且在数据库与RestHighLevelClient的交互完成后也需要关闭连接。 这是可以做到的 紧密连接 private static synchronized void closeConnection() throws IOException {restHighLevelClient.close();restHighLevelClient null; } 我们还为RestHighLevelClient对象分配了null以便Singleton模式可以保持一致。 5.5插入数据 通过将键和值转换为Hashmap可以将数据插入数据库。 ES数据库仅接受HashMap形式的值。 让我们看一下如何实现这一点的代码片段 POST查询 private static Person insertPerson(Person person){person.setPersonId(UUID.randomUUID().toString());MapString, Object dataMap new HashMapString, Object();dataMap.put(personId, person.getPersonId());dataMap.put(name, person.getName());IndexRequest indexRequest new IndexRequest(INDEX, TYPE, person.getPersonId()).source(dataMap);try {IndexResponse response restHighLevelClient.index(indexRequest);} catch(ElasticsearchException e) {e.getDetailedMessage();} catch (java.io.IOException ex){ex.getLocalizedMessage();}return person; } 上面我们还使用Java的UUID类来创建对象的唯一标识符。 这样我们可以控制如何制作对象的标识符。 5.6发出GET请求 将数据插入数据库后我们可以通过向Elasticsearch数据库服务器发出GET请求来确认操作。 让我们看一下如何做到这一点的代码片段 GET查询 private static Person getPersonById(String id){GetRequest getPersonRequest new GetRequest(INDEX, TYPE, id);GetResponse getResponse null;try {getResponse restHighLevelClient.get(getPersonRequest);} catch (java.io.IOException e){e.getLocalizedMessage();}return getResponse ! null ?objectMapper.convertValue(getResponse.getSourceAsMap(), Person.class) : null; } 在此查询中我们仅提供了有关可用来识别对象的主要信息即索引类型及其唯一标识符。 同样我们得到的实际上是一个值映射如以下表达式所示 获取地图 getResponse.getSourceAsMap() 实际上是Jackson的objectMapper用于将该Map转换为可以在我们的程序中轻松使用的POJO Object这样我们不必每个Map都构成键当您可以时这将是一个繁琐的过程只是有一个POJO对象。 5.7更新数据 我们可以通过首先使用索引类型和唯一标识符标识资源来轻松地向Elasticsearch发出更新请求。 然后我们可以使用新的HashMap对象来更新Object中任意数量的值。 这是一个示例代码片段 PUT查询 private static Person updatePersonById(String id, Person person){UpdateRequest updateRequest new UpdateRequest(INDEX, TYPE, id).fetchSource(true); // Fetch Object after its updatetry {String personJson objectMapper.writeValueAsString(person);updateRequest.doc(personJson, XContentType.JSON);UpdateResponse updateResponse restHighLevelClient.update(updateRequest);return objectMapper.convertValue(updateResponse.getGetResult().sourceAsMap(), Person.class);}catch (JsonProcessingException e){e.getMessage();} catch (java.io.IOException e){e.getLocalizedMessage();}System.out.println(Unable to update person);return null; } 请注意以下语句中我们在上面所做的操作 PUT查询 updateRequest.doc(personJson, XContentType.JSON); 在这里我们没有传递需要更新的对象的任何特定属性而是传递了完整的Object JSON它将替换该对象存在的每个键。 我们还通过catch语句检查了任何可能的错误。 在实际的应用程序中您将需要适当地处理这些错误并制作记录的日志。 5.8删除数据 最后我们可以通过简单地用索引类型和唯一标识符标识资源来删除数据。 让我们看一下如何做到这一点的代码片段 删除查询 private static void deletePersonById(String id) {DeleteRequest deleteRequest new DeleteRequest(INDEX, TYPE, id);try {DeleteResponse deleteResponse restHighLevelClient.delete(deleteRequest);} catch (java.io.IOException e){e.getLocalizedMessage();} } 同样在上面的DELETE查询中我们仅提到了如何识别对象。 5.9运行应用程序 让我们通过执行上面提到的所有操作来尝试我们的应用程序。 由于这是一个普通的Java应用程序因此我们将调用以下每个方法并打印操作结果 main方法 public static void main(String[] args) throws IOException {makeConnection();System.out.println(Inserting a new Person with name Shubham...);Person person new Person();person.setName(Shubham);person insertPerson(person);System.out.println(Person inserted -- person);System.out.println(Changing name to Shubham Aggarwal...);person.setName(Shubham Aggarwal);updatePersonById(person.getPersonId(), person);System.out.println(Person updated -- person);System.out.println(Getting Shubham...);Person personFromDB getPersonById(person.getPersonId());System.out.println(Person from DB -- personFromDB);System.out.println(Deleting Shubham...);deletePersonById(personFromDB.getPersonId());System.out.println(Person Deleted);closeConnection(); } 使用代码运行此应用程序后将获得以下输出 节目输出 Inserting a new Person with name Shubham... Person inserted -- Person{personIdbfc5ba80-832a-4925-9b8d-525a4e420cb0, nameShubham} Changing name to Shubham Aggarwal... Unable to update person Person updated -- Person{personIdbfc5ba80-832a-4925-9b8d-525a4e420cb0, nameShubham Aggarwal} Getting Shubham... Person from DB --Person{personIdbfc5ba80-832a-4925-9b8d-525a4e420cb0, nameShubham Aggarwal} Deleting Shubham... Person Deleted 当然ID可以有所不同。 请注意在完成查询后我们关闭了连接。 这有助于JVM收回由ES连接保留的内存。 六结论 在本课程中我们研究了如何将Elasticsearch与使用REST客户端的普通Java客户端一起使用。 需要使用一个可扩展的示例来探讨选择使用REST客户端使其在实际应用程序中可用。 这是我们开始构建应用程序时需要做出的选择。 在我们的Elasticsearch课程中进一步探索Elasticsearch 。 7.下载完整的源代码 这是有关ElasticSearch REST客户端和Java查询的教程我们通过RESTful操作与Elasticsearch数据库进行了交互。 下载 您可以在此处下载此示例的完整源代码 Elasticsearch示例 翻译自: https://www.javacodegeeks.com/2018/03/elasticsearch-tutorial-beginners.html
http://www.zqtcl.cn/news/509956/

相关文章:

  • 网站建设需要知道什么财税公司怎么找客源
  • 赣州那里有做网站的公司物流网站建设平台
  • 青色系网站北京的建筑设计公司
  • 纺织品做外贸一般在哪个网站上手机网站qq登录插件
  • 长沙做公司网站有没有免费的云服务器可以用
  • 济南专业网站优化如何制作小程序二维码
  • 建站平台软件猪八戒做网站要多少钱
  • 建设集团网站专业开发网站多少钱
  • 网站制作流程有哪些wordpress众筹
  • 网站打开是建设中手机咋建网站
  • 外贸专业网站的公司建百度网站
  • 北京做网站开发公司有哪些网站技术开发文档模板
  • 图解asp.net网站开发实战外管局网站先支后收怎么做报告
  • 访问自己做的网站吗织梦自动生成手机网站
  • 湖南岳阳网站开发网络公司兰州最好的互联网公司
  • 网站上线 流程网站左侧漂浮代码
  • 基于mvc4商务网站开发网站建设引言
  • 深圳网站设计师西安企业100强
  • dz网站数据备份购物网站配色怎么设计
  • 适合网站开发工程师的公司图片百度搜索
  • 网站界面设计需求wordpress single.php
  • 比较权威的房产网站合肥瑶海区地图全图高清版
  • 网站建设公司果动小学电教检查网站建设资料
  • 电子商务网站设计成功的要素青岛网页设计师
  • 门户网站平台建设方案网站开发后如何上线
  • 濮阳做网站的番禺区网络推广渠道
  • 杭州网站seo外包外链图片
  • 苏州网站建设有限公司枣阳建网站
  • 网站开发平台选择如何制作购物网站
  • 专业建设网站企业外包公司企业网站