﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-青蛙學堂</title><link>http://www.cnitblog.com/yide/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:58:56 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:58:56 GMT</pubDate><ttl>60</ttl><item><title>linux vi 目录</title><link>http://www.cnitblog.com/yide/archive/2022/09/12/96055.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 12 Sep 2022 07:57:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/09/12/96055.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/96055.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/09/12/96055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/96055.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/96055.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><br /><span style="color: #800000; ">1</span>.&nbsp;列出目录内容&nbsp;ls<br /><br /><span style="color: #800000; ">2</span>.&nbsp;进入目录:&nbsp;cd&nbsp;<br /><br /><span style="color: #800000; ">3</span>.&nbsp;创建文件<br />&nbsp;&nbsp;&nbsp;touch&nbsp;&nbsp;&nbsp;test2.txt<br /><br /><span style="color: #800000; ">4</span>.&nbsp;打开文件<br />&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;test2.txt<br /><br /><span style="color: #800000; ">5</span>.&nbsp;切换至插入模式（Insert&nbsp;mode）编辑文件<br />&nbsp;&nbsp;&nbsp;插入模式输入字符<br />&nbsp;&nbsp;&nbsp;您目前处于「插入模式（Insert&nbsp;mode）」，您就只能一直输入文字，如果您发现输错了字！想用光标键往回移动，将该字删除，就要先按一下「ESC」键转到「命令行模式（command&nbsp;mode）」再删除文字。<br />&nbsp;&nbsp;&nbsp;按「i」切换进入插入模式「insert&nbsp;mode」，按<span style="font-weight: bold;">"</span><span style="font-weight: bold;">i</span><span style="font-weight: bold;">"</span>进入插入模式后是从光标当前位置开始输入文件；<br />　　按「a」进入插入模式后，是从目前光标所在位置的下一个位置开始输入文字；<br />　　按「o」进入插入模式后，是插入新的一行，从行首开始输入文字。<br />&nbsp;<br /><span style="color: #800000; ">6</span>.&nbsp;esc&nbsp;进入命令行模式（command&nbsp;mode）<br />&nbsp;&nbsp;&nbsp;命令模式删除字符，使用光标<br />&nbsp;&nbsp;&nbsp;在「命令行模式（command&nbsp;mode）」下按一下字母「i」就可以进入「插入模式（Insert&nbsp;mode）」，这时候你就可以开始输入文字了。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #800000; ">7</span>.在命令行模式删除文字<br />　　「x」：每按一次，删除光标所在位置的<span style="font-weight: bold;">"</span><span style="font-weight: bold;">后面</span><span style="font-weight: bold;">"</span>一个字符。<br />　　「<span style="color: #008000; ">#</span><span style="color: #008000; ">x」：例如，「6x」表示删除光标所在位置的"后面"6个字符。</span><span style="color: #008000; "><br /></span>　　「X」：大写的X，每按一次，删除光标所在位置的<span style="font-weight: bold;">"</span><span style="font-weight: bold;">前面</span><span style="font-weight: bold;">"</span>一个字符。<br />　　「<span style="color: #008000; ">#</span><span style="color: #008000; ">X」：例如，「20X」表示删除光标所在位置的"前面"20个字符。</span><span style="color: #008000; "><br /></span>　　「dd」：删除光标所在行。<br />　　「<span style="color: #008000; ">#</span><span style="color: #008000; ">dd」：从光标所在行开始删除#行</span><span style="color: #008000; "><br /></span><span style="color: #800000; ">8</span>.<span style="color: #0000FF; ">Last</span>&nbsp;line&nbsp;mode下命令，进入输入命令模式<br />&nbsp;&nbsp;&nbsp;&nbsp;输入：后才可以输入命令<br />　　在使用「<span style="color: #0000FF; ">last</span>&nbsp;line&nbsp;mode」之前，请记住先按「ESC」键确定您已经处于「command&nbsp;mode」下后，再按「：」冒号即可进入「<span style="color: #0000FF; ">last</span>&nbsp;line&nbsp;mode」。&nbsp;&nbsp;<br />&nbsp;<br /><span style="color: #800000; ">9</span>.搜索及替换命令&nbsp;:<br />/pattern：从光标开始处向文件尾搜索pattern<br />?pattern：从光标开始处向文件首搜索pattern<br />n：在同一方向重复上一次搜索命令,完成搜索后直接按n<br />N：在反方向上重复上一次搜索命令&nbsp;&nbsp;,上一次完成后直接按N<br />&nbsp;&nbsp;&nbsp;<br /><span style="color: #800000; ">10</span>.退出vi及保存文件<br />　　在「命令行模式（command&nbsp;mode）」下，按一下「：」冒号键进入「<span style="color: #0000FF; ">Last</span>&nbsp;line&nbsp;mode」，例如：<br />:&nbsp;w&nbsp;filename&nbsp;（输入&nbsp;「w&nbsp;filename」将文章以指定的文件名filename保存）<br />:&nbsp;wq&nbsp;(输入「wq」，存盘并退出vi)<br />:&nbsp;q!&nbsp;(输入q!，&nbsp;不存盘强制退出vi)<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp; &nbsp;</div><img src ="http://www.cnitblog.com/yide/aggbug/96055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-09-12 15:57 <a href="http://www.cnitblog.com/yide/archive/2022/09/12/96055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Elasticsearch简介</title><link>http://www.cnitblog.com/yide/archive/2022/08/26/96043.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Fri, 26 Aug 2022 06:18:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/08/26/96043.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/96043.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/08/26/96043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/96043.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/96043.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Elasticsearch简介<br /><br />Elasticsearch&nbsp;（ES）是一个基于Apache&nbsp;Lucene&#8482;的开源搜索引擎，无论在开源还是专有领域，Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。<br /><br />但是，Lucene只是一个库。想要发挥其强大的作用，你需使用C#将其集成到你的应用中。Lucene非常复杂，你需要深入的了解检索相关知识来理解它是如何工作的。<br /><br />Elasticsearch是使用Java编写并使用Lucene来建立索引并实现搜索功能，但是它的目的是通过简单连贯的RESTful&nbsp;API让全文搜索变得简单并隐藏Lucene的复杂性。<br /><br />不过，Elasticsearch不仅仅是Lucene和全文搜索引擎，它还提供：<br /><br />分布式的实时文件存储，每个字段都被索引并可被搜索<br /><br />实时分析的分布式搜索引擎<br /><br />可以扩展到上百台服务器，处理PB级结构化或非结构化数据<br /><br />而且，所有的这些功能被集成到一台服务器，你的应用可以通过简单的RESTful&nbsp;API、各种语言的客户端甚至命令行与之交互。<br /><br />上手Elasticsearch非常简单，它提供了许多合理的缺省值，并对初学者隐藏了复杂的搜索引擎理论。它开箱即用（安装即可使用），只需很少的学习既可在生产环境中使用。Elasticsearch在Apache&nbsp;2&nbsp;license下许可使用，可以免费下载、使用和修改。<br /><br />随着知识的积累，你可以根据不同的问题领域定制Elasticsearch的高级特性，这一切都是可配置的，并且配置非常灵活。<br /><br /><span style="color: #008000; "><br /></span><br />使用C#操作ES<br /><br />NEST是一个高层的客户端，可以映射所有请求和响应对象，拥有一个强类型查询DSL（领域特定语言），并且可以使用.net的特性比如协变、Auto&nbsp;Mapping&nbsp;Of&nbsp;POCOs，NEST内部使用的依然是Elasticsearch.Net客户端。<br /><br />Elasticsearch.net（NEST）客户端提供了强类型查询DSL，方便用户使用，源码下载。（https:<span style="color: #008000; ">//</span><span style="color: #008000; ">github.com/elastic/elasticsearch-net/releases/tag/2.4.4）</span><span style="color: #008000; "><br /></span><br />一、如何安装NEST<br /><br />打开VS的工具菜单，通过NuGet包管理器控制台，输入以下命令安装NEST<br /><br />Install-Package&nbsp;NEST<br /><br />安装后引用了以下三个DLL<br /><br />Elasticsearch.Net.dll（2.4.4）<br /><br />Nest.dll（2.4.4）<br /><br />Newtonsoft.Json.dll（9.0版本）<br /><br />二、链接elasticsearch<br /><br />你可以通过单个节点或者指定多个节点使用连接池链接到Elasticsearch集群，使用连接池要比单个节点链接到Elasticsearch更有优势，比如支持负载均衡、故障转移等。<br /><br />通过单点链接：<br /><br />var&nbsp;node&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Uri(&#8220;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">myserver:9200&#8221;);</span><span style="color: #008000; "><br /></span><br />var&nbsp;settings&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ConnectionSettings(node);<br /><br />var&nbsp;client&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ElasticClient(settings);<br /><br />通过连接池链接：<br /><br />var&nbsp;nodes&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Uri[]<br /><br />{<br /><span style="color: #0000FF; ">new</span>&nbsp;Uri("http://myserver1:9200"),<br /><br /><span style="color: #0000FF; ">new</span>&nbsp;Uri("http://myserver2:9200"),<br /><br /><span style="color: #0000FF; ">new</span>&nbsp;Uri("http://myserver3:9200")<br />};<br /><br />var&nbsp;pool&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;StaticConnectionPool(nodes);<br /><br />var&nbsp;settings&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ConnectionSettings(pool);<br /><br />var&nbsp;client&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ElasticClient(settings);<br /><br />NEST&nbsp;Index<br /><br />为了知道请求需要操作哪个索引，Elasticsearch&nbsp;API期望收到一个或多个索引名称作为请求的一部分。<br /><br />一、指定索引<br /><br />1、可以通过ConnectionSettings使用.DefaultIndex()，来指定默认索引。当一个请求里没有指定具体索引时，NEST将请求默认索引。<br /><br />var&nbsp;settings&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ConnectionSettings()<br /><br />.DefaultIndex("defaultindex");<br />2、可以通过ConnectionSettings使用.MapDefaultTypeIndices()，来指定被映射为CLR类型的索引。<br /><br />var&nbsp;settings&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ConnectionSettings()<br /><br />.MapDefaultTypeIndices(m&nbsp;=&gt;&nbsp;m<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;.Add(<span style="color: #0000FF; ">typeof</span>(Project),&nbsp;"projects")<br /><br />);<br />注意：通过.MapDefaultTypeIndices()指定索引的优先级要高于通过.DefaultIndex()指定索引，并且更适合简单对象（POCO）<br /><br />3、另外还可以显示的为请求指定索引名称，例如：<br /><br />var&nbsp;response&nbsp;=&nbsp;client.Index(student,&nbsp;s=&gt;s.Index(&#8220;db_test&#8221;));<br /><br />var&nbsp;result&nbsp;=&nbsp;client.Search(s&nbsp;=&gt;&nbsp;s.Index(&#8220;db_test&#8221;));<br /><br />var&nbsp;result&nbsp;=&nbsp;client.Delete(<span style="color: #0000FF; ">null</span>,&nbsp;s&nbsp;=&gt;&nbsp;s.Index(&#8220;db_test&#8221;));<br /><br />&#8230;&#8230;<br /><br />注意：当现实的为请求指定索引名称时，这个优先级是最高的，高于以上两种方式指定的索引。<br /><br />4、一些Elasticsearch&nbsp;API（比如query）可以采用一个、多个索引名称或者使用_all特殊标志发送请求，请求NEST上的多个或者所有节点<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">请求单一节点</span><span style="color: #008000; "><br /></span><br />var&nbsp;singleString&nbsp;=&nbsp;Nest.Indices.Index(&#8220;db_studnet&#8221;);<br /><br />var&nbsp;singleTyped&nbsp;=&nbsp;Nest.Indices.Index();<br /><br />ISearchRequest&nbsp;singleStringRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(singleString);<br /><br />ISearchRequest&nbsp;singleTypedRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(singleTyped);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">请求多个节点</span><span style="color: #008000; "><br /></span><br />var&nbsp;manyStrings&nbsp;=&nbsp;Nest.Indices.Index(&#8220;db_studnet&#8221;,&nbsp;&#8220;db_other_student&#8221;);<br /><br />var&nbsp;manyTypes&nbsp;=&nbsp;Nest.Indices.Index().And();<br /><br />ISearchRequest&nbsp;manyStringRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(manyStrings);<br /><br />ISearchRequest&nbsp;manyTypedRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(manyTypes);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">请求所有节点</span><span style="color: #008000; "><br /></span><br />var&nbsp;indicesAll&nbsp;=&nbsp;Nest.Indices.All;<br /><br />var&nbsp;allIndices&nbsp;=&nbsp;Nest.Indices.AllIndices;<br /><br />ISearchRequest&nbsp;indicesAllRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(indicesAll);<br /><br />ISearchRequest&nbsp;allIndicesRequest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SearchDescriptor().Index(allIndices);<br /><br />二、创建索引<br /><br />Elasticsearch&nbsp;API允许你创建索引的同时对索引进行配置，例如：<br /><br />var&nbsp;descriptor&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CreateIndexDescriptor(&#8220;db_student&#8221;)<br /><br />.Settings(s&nbsp;=&gt;&nbsp;s.NumberOfShards(5).NumberOfReplicas(1));<br />client.CreateIndex(descriptor);<br /><br />这里指定了该索引的分片数为5、副本数为1。<br /><br />三、删除索引<br /><br />Elasticsearch&nbsp;API允许你删除索引，例如：<br /><br />var&nbsp;descriptor&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;DeleteIndexDescriptor(&#8220;db_student&#8221;).Index(&#8220;db_student&#8221;);<br /><br />client.DeleteIndex(descriptor)<br /><br />这里制定了要删除的索引名称&#8220;db_student&#8221;，以下为更多删除用例：<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">删除指定索引所在节点下的所有索引</span><span style="color: #008000; "><br /></span><br />var&nbsp;descriptor&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;DeleteIndexDescriptor(&#8220;db_student&#8221;).AllIndices();<br /><br />NEST&nbsp;Mapping<br /><br />NEST提供了多种映射方法，这里介绍下通过Attribute自定义映射。<br /><br />一、简单实现<br /><br />1、定义业务需要的POCO，并指定需要的Attribute<br /><br />[ElasticsearchType(Name&nbsp;=&nbsp;&#8220;student&#8221;)]<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Student<br /><br />{<br />[Nest.String(Index&nbsp;=&nbsp;FieldIndexOption.NotAnalyzed)]<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;Id&nbsp;{&nbsp;<span style="color: #0000FF; ">get</span>;&nbsp;<span style="color: #0000FF; ">set</span>;&nbsp;}<br /><br />[Nest.String(Analyzer&nbsp;=&nbsp;"standard")]<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;Name&nbsp;{&nbsp;<span style="color: #0000FF; ">get</span>;&nbsp;<span style="color: #0000FF; ">set</span>;&nbsp;}<br /><br />[Nest.String(Analyzer&nbsp;=&nbsp;"standard")]<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;Description&nbsp;{&nbsp;<span style="color: #0000FF; ">get</span>;&nbsp;<span style="color: #0000FF; ">set</span>;&nbsp;}<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;DateTime&nbsp;DateTime&nbsp;{&nbsp;<span style="color: #0000FF; ">get</span>;&nbsp;<span style="color: #0000FF; ">set</span>;&nbsp;}<br />}<br /><br />2、接着我们通过.AutoMap()来实现映射<br /><br />var&nbsp;descriptor&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CreateIndexDescriptor(&#8220;db_student&#8221;)<br /><br />.Settings(s&nbsp;=&gt;&nbsp;s.NumberOfShards(5).NumberOfReplicas(1))<br /><br />.Mappings(ms&nbsp;=&gt;&nbsp;ms<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;.Map&lt;Student&gt;(m&nbsp;=&gt;&nbsp;m.AutoMap())<br /><br />);<br />client.CreateIndex(descriptor);<br /><br />注意：通过.Properties()可以重写通过Attribute定义的映射<br /><br />二、Attribute介绍<br /><br />1、StringAttribute<br /><br />2、NumberAttribute<br /><br />3、BooleanAttribute<br /><br />属性名&nbsp;值类型&nbsp;描述<br />Boost&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;加权值，值越大得分越高<br />NullValue&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;插入文档时，如果数据为NULL时的默认值<br /><br />4、DateAttribute<br /><br />属性名&nbsp;值类型&nbsp;描述<br />Boost&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;加权值，值越大得分越高<br />NullValue&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;插入文档时，如果数据为NULL时的默认值<br />Format&nbsp;<span style="color: #0000FF; ">string</span><br /><br />5、ObjectAttribute<br /><br />属性名&nbsp;值类型&nbsp;描述<br />type&nbsp;<span style="color: #0000FF; ">string</span>/Type&nbsp;构造函数参数，指定当前属性的类型T<br />Dynamic&nbsp;DynamicMapping<br /><br />NEST&nbsp;Search<br /><br />NEST提供了支持Lambda链式query&nbsp;DLS（领域特定语言）方式，以下是简单实现及各个query的简述。<br /><br />一、简单实现<br /><br />1、定义SearchDescriptor，方便项目中复杂业务的实现<br /><br />var&nbsp;query&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Nest.SearchDescriptor&lt;Models.ESObject&gt;();<br /><br />var&nbsp;result&nbsp;=&nbsp;client.Search(x&nbsp;=&gt;&nbsp;query)<br /><br />2、检索title和content中包含key，并且作者不等于&#8220;wenli&#8221;的文档<br /><br />query.Query(q&nbsp;=&gt;<br /><br />q.Bool(b&nbsp;=&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;b.Must(m&nbsp;=&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.MultiMatch(t&nbsp;=&gt;&nbsp;t.Fields(f&nbsp;=&gt;&nbsp;f.Field(obj&nbsp;=&gt;&nbsp;obj.Title).Field(obj&nbsp;=&gt;&nbsp;obj.Content)).Query(key))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;.MustNot(m&nbsp;=&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.QueryString(t&nbsp;=&gt;&nbsp;t.Fields(f&nbsp;=&gt;&nbsp;f.Field(obj&nbsp;=&gt;&nbsp;obj.Author)).Query("wenli"))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;)<br /><br />)<br />);<br /><br />注意：<br /><br />如果Elasticsearch使用默认分词，Title和Content的attribute为[Nest.String(Analyzer&nbsp;=&nbsp;&#8220;standard&#8221;)]<br /><br />如果Elasticsearch使用的是IK分词，Title和Content的attribute为[Nest.String(Analyzer&nbsp;=&nbsp;&#8220;ikmaxword&#8221;)]或者[Nest.String(Analyzer&nbsp;=&nbsp;&#8220;ik_smart&#8221;)]<br /><br />Author的attribute为[Nest.String(Index&nbsp;=&nbsp;FieldIndexOption.NotAnalyzed)]，禁止使用分析器<br /><br />3、过滤作者等于&#8220;wenli&#8221;的文档<br /><br />query.PostFilter(x&nbsp;=&gt;&nbsp;x.Term(t&nbsp;=&gt;&nbsp;t.Field(obj&nbsp;=&gt;&nbsp;obj.Author).Value(&#8220;wenli&#8221;)));<br /><br />4、过滤作者等于&#8220;wenli&#8221;或者等于&#8220;yswenli&#8221;的文档，匹配多个作者中间用空格隔开<br /><br />query.PostFilter(x&nbsp;=&gt;&nbsp;x.QueryString(t&nbsp;=&gt;&nbsp;t.Fields(f&nbsp;=&gt;&nbsp;f.Field(obj&nbsp;=&gt;&nbsp;obj.Author)).Query(&#8220;wenli&nbsp;yswenli&#8221;)));<br /><br />5、过滤数量在1~100之间的文档<br /><br />query.PostFilter(x&nbsp;=&gt;&nbsp;x.Range(t&nbsp;=&gt;&nbsp;t.Field(obj&nbsp;=&gt;&nbsp;obj.Number).GreaterThanOrEquals(1).LessThanOrEquals(100)));<br /><br />6、排序，按照得分倒叙排列<br /><br />query.Sort(x&nbsp;=&gt;&nbsp;x.Field("_score",&nbsp;Nest.SortOrder.Descending));<br /><br />7、定义高亮样式及字段<br /><br />query.Highlight(h&nbsp;=&gt;&nbsp;h<br /><br />.PreTags("&lt;b&gt;")<br /><br />.PostTags("&lt;/b&gt;")<br /><br />.Fields(<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&gt;&nbsp;f.Field(obj&nbsp;=&gt;&nbsp;obj.Title),<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&gt;&nbsp;f.Field(obj&nbsp;=&gt;&nbsp;obj.Content),<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&gt;&nbsp;f.Field("_all")<br /><br />)<br />);<br /><br />8、拼装查询内容，整理数据，方便前段调用<br /><br />var&nbsp;list&nbsp;=&nbsp;result.Hits.Select(c&nbsp;=&gt;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Models.ESObject()<br /><br />{<br />Id&nbsp;=&nbsp;c.Source.Id,<br /><br />Title&nbsp;=&nbsp;c.Highlights&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;?&nbsp;c.Source.Title&nbsp;:&nbsp;c.Highlights.Keys.Contains("title")&nbsp;?&nbsp;<span style="color: #0000FF; ">string</span>.Join("",&nbsp;c.Highlights["title"].Highlights)&nbsp;:&nbsp;c.Source.Title,&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">高亮显示的内容，一条记录中出现了几次</span><span style="color: #008000; "><br /></span><br />Content&nbsp;=&nbsp;c.Highlights&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;?&nbsp;c.Source.Content&nbsp;:&nbsp;c.Highlights.Keys.Contains("content")&nbsp;?&nbsp;<span style="color: #0000FF; ">string</span>.Join("",&nbsp;c.Highlights["content"].Highlights)&nbsp;:&nbsp;c.Source.Content,&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">高亮显示的内容，一条记录中出现了几次</span><span style="color: #008000; "><br /></span><br />Author&nbsp;=&nbsp;c.Source.Author,<br /><br />Number&nbsp;=&nbsp;c.Source.Number,<br /><br />IsDisplay&nbsp;=&nbsp;c.Source.IsDisplay,<br /><br />Tags&nbsp;=&nbsp;c.Source.Tags,<br /><br />Comments&nbsp;=&nbsp;c.Source.Comments,<br /><br />DateTime&nbsp;=&nbsp;c.Source.DateTime,<br />})<br /><br />二、query&nbsp;DSL介绍<br /><br />elasticsearch.net&nbsp;Document<br /><br />文档操作包含添加/更新文档、局部更新文档、删除文档及对应的批量操作文档方法。<br /><br />一、添加/更新文档及批量操作<br /><br />添加/更新单一文档<br /><br />Client.Index(student);<br /><br />批量添加/更新文档<br /><br />var&nbsp;list&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List();<br /><br />client.IndexMany(list);<br /><br />二、局部更新单一文档及批量操作<br /><br />局部更新单一文档<br /><br />client.Update&lt;Student,&nbsp;<span style="color: #0000FF; ">object</span>&gt;(&#8220;002&#8221;,&nbsp;upt&nbsp;=&gt;&nbsp;upt.Doc(<span style="color: #0000FF; ">new</span>&nbsp;{&nbsp;Name&nbsp;=&nbsp;&#8220;wenli&#8221;&nbsp;}));<br /><br />局部更新批量文档<br /><br />var&nbsp;ids&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List()&nbsp;{&nbsp;&#8220;002&#8221;&nbsp;};<br /><br />var&nbsp;bulkQuest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;BulkRequest()&nbsp;{&nbsp;Operations&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List()&nbsp;};<br /><br /><span style="color: #0000FF; ">foreach</span>&nbsp;(var&nbsp;v&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;ids)<br /><br />{<br />var&nbsp;operation&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;BulkUpdateOperation&lt;Student,&nbsp;<span style="color: #0000FF; ">object</span>&gt;(v);<br /><br />operation.Doc&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;{&nbsp;Name&nbsp;=&nbsp;"wenli"&nbsp;};<br /><br />bulkQuest.Operations.Add(operation);<br />}<br /><br />var&nbsp;result&nbsp;=&nbsp;client.Bulk(bulkQuest);<br /><br />三、删除文档及批量操作<br /><br />删除单一文档<br /><br />client.Delete(&#8220;001&#8221;);<br /><br />批量删除文档<br /><br />var&nbsp;ids&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List()&nbsp;{&nbsp;&#8220;001&#8221;,&nbsp;&#8220;002&#8221;&nbsp;};<br /><br />var&nbsp;bulkQuest&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;BulkRequest()&nbsp;{&nbsp;Operations&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List()&nbsp;};<br /><br /><span style="color: #0000FF; ">foreach</span>&nbsp;(var&nbsp;v&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;ids)<br /><br />{<br />bulkQuest.Operations.Add(<span style="color: #0000FF; ">new</span>&nbsp;BulkDeleteOperation&lt;Student&gt;(v));<br />}<br /><br />var&nbsp;result&nbsp;=&nbsp;client.Bulk(bulkQuest);<br /><br /></div><img src ="http://www.cnitblog.com/yide/aggbug/96043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-08-26 14:18 <a href="http://www.cnitblog.com/yide/archive/2022/08/26/96043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ES C# 增删改</title><link>http://www.cnitblog.com/yide/archive/2022/08/10/96040.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 10 Aug 2022 03:20:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/08/10/96040.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/96040.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/08/10/96040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/96040.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/96040.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><br />索引(添加)<br />var&nbsp;settings&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ConnectionSettings(<span style="color: #0000FF; ">new</span>&nbsp;Uri("http://****:9200/")).DefaultFieldNameInferrer(name&nbsp;=&gt;&nbsp;name);<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;client&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ElasticClient(settings);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">index、indexDocument：添加</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;indexResponse1&nbsp;=&nbsp;client.IndexDocument&lt;People&gt;(<span style="color: #0000FF; ">new</span>&nbsp;People&nbsp;{&nbsp;Id&nbsp;=&nbsp;4,&nbsp;Age&nbsp;=&nbsp;4,&nbsp;Name&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Name&nbsp;{&nbsp;Firstname&nbsp;=&nbsp;"wj",&nbsp;Lastname&nbsp;=&nbsp;"f"&nbsp;}&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;indexResponse2&nbsp;=&nbsp;client.Index&lt;People&gt;(<span style="color: #0000FF; ">new</span>&nbsp;People&nbsp;{&nbsp;Id&nbsp;=&nbsp;4,&nbsp;Age&nbsp;=&nbsp;4&nbsp;},&nbsp;i&nbsp;=&gt;&nbsp;i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Index("my_index")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Id(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Routing("1")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Refresh(Refresh.True));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;indexResponse3&nbsp;=&nbsp;client.IndexDocument&lt;People&gt;(<span style="color: #0000FF; ">new</span>&nbsp;People&nbsp;{&nbsp;Id&nbsp;=&nbsp;4,&nbsp;Age&nbsp;=&nbsp;4,&nbsp;Name&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Name&nbsp;{&nbsp;Firstname&nbsp;=&nbsp;"wj",&nbsp;Lastname&nbsp;=&nbsp;"f"&nbsp;}&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />删除<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">delete、deleteByQuery：删除</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">删除指定id文档</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.Delete&lt;ElasticUserModel&gt;(3,&nbsp;d&nbsp;=&gt;&nbsp;d.Index("index13"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">删除指定条件的文档</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.DeleteByQuery&lt;ElasticUserModel&gt;(d&nbsp;=&gt;&nbsp;d.Index("index13").Query(q&nbsp;=&gt;&nbsp;q.Term("UserID",&nbsp;4)));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />修改<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">update：修改</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Update&lt;object&gt;只会修改指定的字段，如下只修改Name，其他字段不变。</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;updateResponse&nbsp;=&nbsp;client.Update&lt;<span style="color: #0000FF; ">object</span>&gt;(2,&nbsp;u&nbsp;=&gt;&nbsp;u<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Index("index13")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Doc(<span style="color: #0000FF; ">new</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;=&nbsp;"fan22"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />批量增删改<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">bulk：批量增删改</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;bulkResponse&nbsp;=&nbsp;client.Bulk(b=&gt;b<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Update&lt;<span style="color: #0000FF; ">object</span>&gt;(u=&gt;u.Index("index13").Id(2).Doc(<span style="color: #0000FF; ">new</span>&nbsp;{&nbsp;Name="fan222"&nbsp;}))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Delete&lt;ElasticUserModel&gt;(d=&gt;d.Index("index13").Id(1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Index&lt;ElasticUserModel&gt;(i=&gt;i.Index("index13").Document(<span style="color: #0000FF; ">new</span>&nbsp;ElasticUserModel&nbsp;{UserID=11,Name="fan11",Age=11,CreateTime=DateTime.Now,Handle="handle11"&nbsp;}))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />version（乐观锁）<br />查询时获取文档版本号，修改时传版本号，如果相同就修改<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">查询到版本号</span><span style="color: #008000; "><br /></span>&nbsp;var&nbsp;result&nbsp;=&nbsp;_client.Search&lt;TestModel5&gt;(<br />&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.Index(indexName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Query(q&nbsp;=&gt;&nbsp;q.Term(tm&nbsp;=&gt;&nbsp;tm.Field(fd=&gt;fd.State).Value(1))).Size(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Version()<span style="color: #008000; ">//</span><span style="color: #008000; ">结果中包含版本号</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><span style="color: #0000FF; ">foreach</span>&nbsp;(var&nbsp;s&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;result.Hits)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(s.Id&nbsp;+&nbsp;"&nbsp;&nbsp;-&nbsp;&nbsp;"&nbsp;+&nbsp;s.Version);<br />}<br /><br />var&nbsp;path&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;DocumentPath&lt;TestModel5&gt;(1);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">更新时带上版本号&nbsp;如果服务端版本号与传入的版本好相同才能更新成功</span><span style="color: #008000; "><br /></span>var&nbsp;response&nbsp;=&nbsp;_client.Update(path,&nbsp;(p)&nbsp;=&gt;&nbsp;p<br />&nbsp;&nbsp;&nbsp;&nbsp;.Index(indexName)<br />&nbsp;&nbsp;&nbsp;&nbsp;.Type(<span style="color: #0000FF; ">typeof</span>(TestModel5))<br />&nbsp;&nbsp;&nbsp;&nbsp;.Version(2)<span style="color: #008000; ">//</span><span style="color: #008000; ">限制es中版本号为2时才能成功</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;.Doc(<span style="color: #0000FF; ">new</span>&nbsp;TestModel5()&nbsp;{&nbsp;Name&nbsp;=&nbsp;"测测测"&nbsp;+&nbsp;DateTime.Now&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br /><br /><br /><br /></div><img src ="http://www.cnitblog.com/yide/aggbug/96040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-08-10 11:20 <a href="http://www.cnitblog.com/yide/archive/2022/08/10/96040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bat 关闭win10更新</title><link>http://www.cnitblog.com/yide/archive/2022/07/25/96036.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 25 Jul 2022 00:28:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/07/25/96036.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/96036.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/07/25/96036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/96036.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/96036.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->BlockWin10AU&nbsp;是一款轻量的开源&nbsp;Windows&nbsp;自动更新管理工具。<br />只需要下载一段&nbsp;7&nbsp;KB&nbsp;的&nbsp;.bat&nbsp;批处理文件，<br /><br />右键以管理员身份运行&nbsp;&#8220;Block&nbsp;WAU[vxia.net].bat&#8221;&nbsp;即可禁止Windows10的自动更新功能<br />由于涉及到系统关键位置，记得先关闭类似360的安全软件<br /><br />注：但正因为它如此简单，之后想恢复更新时的步骤也会比较麻烦。<br />开源地址（感谢分享者开源）：https:<span style="color: #008000; ">//</span><span style="color: #008000; ">github.com/f1tz/BlockWin10AU</span><span style="color: #008000; "><br /></span><br /><br />相关代码：<br /><br /><br />@echo&nbsp;off<br />title&nbsp;BLOCK&nbsp;Win10AU!<br />mode&nbsp;con&nbsp;cols=70&nbsp;lines=15<br />color&nbsp;1f<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;禁用Windows10自动更新&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;Block&nbsp;Windows&nbsp;X&nbsp;Automatic&nbsp;Update&nbsp;By&nbsp;F1tz&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;请先退出360等安全管家！&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;请确认右键选择&#8220;以管理员身份运行&#8221;此脚本&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;Please&nbsp;quit&nbsp;your&nbsp;Anti-Malware&nbsp;software&nbsp;first!&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;Make&nbsp;sure&nbsp;Right-click&nbsp;on&nbsp;script&nbsp;select&nbsp;"Run&nbsp;as&nbsp;administrator".&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo.<br />pause<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;结束进程&nbsp;/&nbsp;Stopping&nbsp;Process<img src="http://www.cnitblog.com/Images/dot.gif"  alt="" />&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />taskkill&nbsp;/im&nbsp;Windows10UpgraderApp.exe&nbsp;2&gt;nul<br />del&nbsp;/f&nbsp;/q&nbsp;"%USERPROFILE%\Desktop\微软&nbsp;Windows&nbsp;10&nbsp;易升.lnk"&nbsp;2&gt;nul<br />del&nbsp;/f&nbsp;/q&nbsp;"%USERPROFILE%\Desktop\Windows&nbsp;10&nbsp;Update&nbsp;Assistant.lnk"&nbsp;2&gt;nul<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;添加防火墙规则&nbsp;/&nbsp;Adding&nbsp;firewall&nbsp;rules<img src="http://www.cnitblog.com/Images/dot.gif"  alt="" />&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_Windows10UpgraderApp"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\Windows10UpgraderApp.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_WinREBootApp32"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\WinREBootApp32.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_WinREBootApp64"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\WinREBootApp64.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_bootsect"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\bootsect.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_DW20"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\DW20.EXE"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_DWTRIG20"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\DWTRIG20.EXE"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_GatherOSState"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\GatherOSState.EXE"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_GetCurrentRollback"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\GetCurrentRollback.EXE"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_HttpHelper"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMDRIVE%\Windows10Upgrade\HttpHelper.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_UpdateAssistant"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistant\UpdateAssistant.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_UpdateAssistantCheck"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistant\UpdateAssistantCheck.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_Windows10Upgrade"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistant\Windows10Upgrade.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_UpdateAssistantV2"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistantV2\UpdateAssistant.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_UpdateAssistantCheckV2"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistantV2\UpdateAssistantCheck.exe"&nbsp;action=block<br />netsh&nbsp;advfirewall&nbsp;firewall&nbsp;add&nbsp;rule&nbsp;name="Block_Windows10UpgradeV2"&nbsp;dir=<span style="color: #0000FF; ">in</span>&nbsp;program="%SYSTEMROOT%\UpdateAssistantV2\Windows10Upgrade.exe"&nbsp;action=block<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;设置ACL&nbsp;/&nbsp;Configurating&nbsp;ACL<img src="http://www.cnitblog.com/Images/dot.gif"  alt="" />&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />echo&nbsp;y|cacls&nbsp;C:\Windows\UpdateAssistant\*.exe&nbsp;/t&nbsp;/p&nbsp;everyone:n&nbsp;2&gt;nul<br />echo&nbsp;y|cacls&nbsp;C:\Windows10Upgrade\*.exe&nbsp;/t&nbsp;/p&nbsp;everyone:n&nbsp;2&gt;nul<br />echo.<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;停止Windows&nbsp;Update服务&nbsp;/&nbsp;Disable&nbsp;Windows&nbsp;Update&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />net&nbsp;stop&nbsp;wuauserv<br />sc&nbsp;config&nbsp;wuauserv&nbsp;start=&nbsp;disabled<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;删除计划任务&nbsp;/&nbsp;Delete&nbsp;task<img src="http://www.cnitblog.com/Images/dot.gif"  alt="" />&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />schtasks&nbsp;/<span style="color: #0000FF; ">delete</span>&nbsp;/TN&nbsp;"\Microsoft\Windows\UpdateOrchestrator\UpdateAssistant"&nbsp;/f&nbsp;2&gt;nul<br />schtasks&nbsp;/<span style="color: #0000FF; ">delete</span>&nbsp;/TN&nbsp;"\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantAllUsersRun"&nbsp;/f&nbsp;2&gt;nul<br />schtasks&nbsp;/<span style="color: #0000FF; ">delete</span>&nbsp;/TN&nbsp;"\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantCalendarRun"&nbsp;/f&nbsp;2&gt;nul<br />schtasks&nbsp;/<span style="color: #0000FF; ">delete</span>&nbsp;/TN&nbsp;"\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantWakeupRun"&nbsp;/f&nbsp;2&gt;nul<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;设置注册表&nbsp;/&nbsp;Editing&nbsp;Registry<img src="http://www.cnitblog.com/Images/dot.gif"  alt="" />&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br /><br />del&nbsp;/q&nbsp;/f&nbsp;%SYSTEMDRIVE%\NAU.reg&nbsp;2&gt;nul<br />echo&nbsp;Windows&nbsp;Registry&nbsp;Editor&nbsp;Version&nbsp;5.00&nbsp;&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo.&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo&nbsp;[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo&nbsp;"DoNotConnectToWindowsUpdateInternetLocations"=dword:00000001&nbsp;&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo.&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo&nbsp;[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />echo&nbsp;"NoAutoUpdate"=dword:00000001&gt;&gt;&nbsp;%SYSTEMDRIVE%\NAU.reg<br />REG&nbsp;IMPORT&nbsp;%SYSTEMDRIVE%\NAU.reg<br />del&nbsp;/q&nbsp;/f&nbsp;%SYSTEMDRIVE%\NAU.reg&nbsp;2&gt;nul<br /><br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;任务结束&nbsp;/&nbsp;All&nbsp;Done！&nbsp;&#8251;<br />echo&nbsp;&#8251;&nbsp;&#8251;<br />echo&nbsp;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;&#8251;<br />pause</div><img src ="http://www.cnitblog.com/yide/aggbug/96036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-07-25 08:28 <a href="http://www.cnitblog.com/yide/archive/2022/07/25/96036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js 页面加载时间</title><link>http://www.cnitblog.com/yide/archive/2022/07/18/95855.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 18 Jul 2022 08:33:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/07/18/95855.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/95855.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/07/18/95855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/95855.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/95855.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->在页面Head部分加入初始时间<br />代码如下:<br /><br />&lt;script&nbsp;language=javascript&gt;<br /><span style="color: #0000FF; ">var</span>&nbsp;t1&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Date().getTime();<br />&lt;/script&gt;<br /><br />在Body中加入<br />代码如下:<br /><br />&lt;SCRIPT&nbsp;LANGUAGE="JavaScript"&gt;<br />window.onload&nbsp;=&nbsp;<span style="color: #0000FF; ">function</span>()<br />{<br />document.getElementById("TimeShow").innerHTML&nbsp;=&nbsp;"加载本页耗时&nbsp;"+&nbsp;(<span style="color: #0000FF; ">new</span>&nbsp;Date().getTime()-t1)&nbsp;+"&nbsp;毫秒";<br />}<br />&lt;/SCRIPT&gt;</div><img src ="http://www.cnitblog.com/yide/aggbug/95855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-07-18 16:33 <a href="http://www.cnitblog.com/yide/archive/2022/07/18/95855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ES SEARCH 数据限制</title><link>http://www.cnitblog.com/yide/archive/2022/07/14/95728.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 14 Jul 2022 03:09:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/07/14/95728.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/95728.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/07/14/95728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/95728.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/95728.html</trackback:ping><description><![CDATA[<div>一般我们使用es的可视化工具来操作es</div><div></div><div>我们进入kibana的页面通过</div><div></div><div>http://ip:5601/app/kibana</div><div>在设置中找到索引管理</div><div></div><div>找到我们需要修改的索引,选择Edit settings,</div><div></div><div>添加"index.max_result_window": "1000000",</div><div></div><div>最后save就可以了</div><img src ="http://www.cnitblog.com/yide/aggbug/95728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-07-14 11:09 <a href="http://www.cnitblog.com/yide/archive/2022/07/14/95728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net core 连sqlserver</title><link>http://www.cnitblog.com/yide/archive/2022/07/11/95669.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 11 Jul 2022 11:56:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/07/11/95669.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/95669.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/07/11/95669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/95669.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/95669.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />.net&nbsp;core使用EF&nbsp;core连接mssqlserver数据库<br />一，打开控制台<br />二，输入以下代码<br />1.Install-Package&nbsp;Microsoft.EntityFrameworkCore<br /><br />2.Install-Package&nbsp;Microsoft.EntityFrameworkCore.SqlServer<br /><br />3.Install-Package&nbsp;Microsoft.EntityFrameworkCore.Tools<br /><br />4.Scaffold-DbContext&nbsp;&#8220;Server=.;Database=EFCore;Trusted_Connection=True;User&nbsp;ID=用户名;Password=密码;&#8221;&nbsp;Microsoft.EntityFrameworkCore.SqlServer&nbsp;-OutputDir&nbsp;要存放实体的文件夹名称<br /><br />&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;System.Linq;</div><img src ="http://www.cnitblog.com/yide/aggbug/95669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-07-11 19:56 <a href="http://www.cnitblog.com/yide/archive/2022/07/11/95669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ES ip访问</title><link>http://www.cnitblog.com/yide/archive/2022/07/01/95668.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Fri, 01 Jul 2022 06:33:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/07/01/95668.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/95668.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/07/01/95668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/95668.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/95668.html</trackback:ping><description><![CDATA[<p style="box-sizing: border-box; margin-bottom: 16px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; padding-top: 0px; padding-bottom: 0px; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto;">在虚拟机安装Elasticsearch后，浏览器可以正常访问9200端口，但是在宿主机上无法通过虚拟机地址加9200端口进入，找了很多资料，说的是修改配置文件elasticsearch.yml，加上network.host: 0.0.0.0，加上这条配置后es无法启动，最后查到需要加上如下四条配置，只加一条无法启动。</p><pre style="box-sizing: border-box; font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;; font-size: 13px; white-space: pre-wrap; padding: 0px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: #333333; word-break: break-all; overflow-wrap: break-word; background-color: #f5f5f5; border: 1px solid #cccccc; border-radius: 4px;"><code style="box-sizing: border-box; font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;; font-size: inherit; padding: 0px; color: inherit; background-color: transparent; border-radius: 0px;">network.host: 0.0.0.0 http.port: 9200 transport.host: localhost transport.tcp.port: 9300</code></pre><img src ="http://www.cnitblog.com/yide/aggbug/95668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-07-01 14:33 <a href="http://www.cnitblog.com/yide/archive/2022/07/01/95668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c# Encoding.Unicode.GetBytes 转码取字符串</title><link>http://www.cnitblog.com/yide/archive/2022/06/07/95655.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 07 Jun 2022 08:34:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/06/07/95655.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/95655.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/06/07/95655.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/95655.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/95655.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;GetUnicodeString(<span style="color: #0000FF; ">byte</span>[]&nbsp;buffer)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(buffer&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;&amp;&amp;&nbsp;(size&nbsp;=&nbsp;buffer.Length)&nbsp;&gt;=&nbsp;2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;-=&nbsp;size&nbsp;%&nbsp;2;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;sizeof(wchar_t)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>[]&nbsp;value&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">char</span>[size&nbsp;/&nbsp;2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;size;&nbsp;i&nbsp;+=&nbsp;2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value[i&nbsp;/&nbsp;2]&nbsp;=&nbsp;(<span style="color: #0000FF; ">char</span>)((buffer[i&nbsp;+&nbsp;1]&nbsp;&lt;&lt;&nbsp;8)&nbsp;+&nbsp;buffer[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">string</span>(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">string</span>.Empty;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;IActionResult&nbsp;Index()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;<span style="color: #0000FF; ">byte</span>&gt;&nbsp;list&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List&lt;<span style="color: #0000FF; ">byte</span>&gt;&nbsp;{&nbsp;0,&nbsp;8,&nbsp;0,&nbsp;0,&nbsp;6,&nbsp;1,&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;8&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;bytes&nbsp;=&nbsp;Encoding.Unicode.GetBytes("MSDTC");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.AddRange(BitConverter.GetBytes(bytes.Length));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.AddRange(bytes);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;rs&nbsp;=&nbsp;list.ToArray();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">"000800000601000000080A0000004D005300440054004300"</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;<span style="color: #0000FF; ">byte</span>&gt;&nbsp;nlist&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List&lt;<span style="color: #0000FF; ">byte</span>&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nlist.AddRange(rs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;13;&nbsp;i&gt;=0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nlist.RemoveAt(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;=&nbsp;nlist.ToArray();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;num&nbsp;=&nbsp;rs.Count();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;hex&nbsp;=&nbsp;Convert.ToHexString(bytes);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;hex1&nbsp;=&nbsp;Convert.ToHexString(rs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;abc&nbsp;=&nbsp;Encoding.UTF8.GetString(bytes);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;abc2&nbsp;=&nbsp;Encoding.UTF8.GetString(rs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ddd&nbsp;=&nbsp;abc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">"4D005300440054004300"</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hex&nbsp;=&nbsp;GetUnicodeString(bytes);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;hex2=&nbsp;GetUnicodeString(rs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;aa&nbsp;=&nbsp;hex;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;bb&nbsp;=&nbsp;aa;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;View();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.cnitblog.com/yide/aggbug/95655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-06-07 16:34 <a href="http://www.cnitblog.com/yide/archive/2022/06/07/95655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python爬虫BeautifulSoup和urllib</title><link>http://www.cnitblog.com/yide/archive/2022/05/17/92717.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 17 May 2022 08:00:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2022/05/17/92717.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/92717.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2022/05/17/92717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/92717.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/92717.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-color: #cccccc; border-image: initial; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #0000FF; ">import</span>&nbsp;urllib,re<br /><span style="color: #0000FF; ">import</span>&nbsp;urllib.request<br /><span style="color: #0000FF; ">from</span>&nbsp;bs4&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;BeautifulSoup<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">file&nbsp;=&nbsp;open('./aatest.html',&nbsp;'rb')</span><span style="color: #008000; "><br /></span><br /><br /><br />root&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">https://health.china.com/toutiao/13003338/20220517/42305957.html</span><span style="color: #800000; ">'</span><br /><br />bs&nbsp;=&nbsp;BeautifulSoup(urllib.request.urlopen(root+u<span style="color: #800000; ">'</span><span style="color: #800000; ">/</span><span style="color: #800000; ">'</span>).read())<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">file&nbsp;=&nbsp;open('https://www.runoob.com/',&nbsp;'rb')</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">html&nbsp;=&nbsp;file.read()</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">bs&nbsp;=&nbsp;BeautifulSoup(html,"html.parser")&nbsp;#&nbsp;缩进格式</span><span style="color: #008000; "><br /></span><br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">print(bs.prettify())&nbsp;#&nbsp;格式化html结构</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">print</span>(bs.title)&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;获取title标签的名称</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.title.name)&nbsp;#&nbsp;获取title的name</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.title.string)&nbsp;#&nbsp;获取head标签的所有内容</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">print</span>(bs.head)<br /><span style="color: #0000FF; ">print</span>(bs.p)<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">print(bs.div)&nbsp;&nbsp;#&nbsp;获取第一个div标签中的所有内容</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.div["id"])&nbsp;#&nbsp;获取第一个div标签的id的值</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.a)</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.find_all("a"))&nbsp;#&nbsp;获取所有的a标签</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.find(id="u1"))&nbsp;#&nbsp;获取id="u1"</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">for</span>&nbsp;item&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;bs.find_all(<span style="color: #800000; ">"</span><span style="color: #800000; ">a</span><span style="color: #800000; ">"</span>):<br />&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;item.get(<span style="color: #800000; ">"</span><span style="color: #800000; ">href</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;s[0:2]!=<span style="color: #800000; ">"</span><span style="color: #800000; ">//</span><span style="color: #800000; ">"</span>&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(s)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">pass</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print(s[2:])</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print("https:"+s)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print(item.get("href"))&nbsp;#&nbsp;获取所有的a标签，并遍历打印a标签中的href的值</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">for&nbsp;item&nbsp;in&nbsp;bs.find_all("a"):</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print(item.get_text())</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">for&nbsp;item&nbsp;in&nbsp;bs.find_all("p"):</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print(item.get_text())</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">for</span>&nbsp;item&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;bs.find_all(name=<span style="color: #800000; ">'</span><span style="color: #800000; ">div</span><span style="color: #800000; ">'</span>,attrs={<span style="color: #800000; ">"</span><span style="color: #800000; ">class</span><span style="color: #800000; ">"</span>:<span style="color: #800000; ">"</span><span style="color: #800000; ">article_notice</span><span style="color: #800000; ">"</span>}):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(item.get_text())<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(item)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(item.select(<span style="color: #800000; ">'</span><span style="color: #800000; ">p</span><span style="color: #800000; ">'</span>))<br /><br />child&nbsp;=&nbsp;bs.find(<span style="color: #800000; ">"</span><span style="color: #800000; ">div</span><span style="color: #800000; ">"</span>,{<span style="color: #800000; ">"</span><span style="color: #800000; ">id</span><span style="color: #800000; ">"</span>:<span style="color: #800000; ">"</span><span style="color: #800000; ">chan_breadcrumbs</span><span style="color: #800000; ">"</span>})<br /><span style="color: #0000FF; ">print</span>(child)<br />child2&nbsp;=&nbsp;bs.find(<span style="color: #800000; ">"</span><span style="color: #800000; ">div</span><span style="color: #800000; ">"</span>,class_=<span style="color: #800000; ">"</span><span style="color: #800000; ">article_notice</span><span style="color: #800000; ">"</span>)<br /><span style="color: #0000FF; ">print</span>(child2)<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">[0].get_text()</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">print</span>(bs.select(<span style="color: #800000; ">'</span><span style="color: #800000; ">.article_notice</span><span style="color: #800000; ">'</span>))&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;类选择器</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">print</span>(bs.select(<span style="color: #800000; ">'</span><span style="color: #800000; ">#chan_breadcrumbs</span><span style="color: #800000; ">'</span>))&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;id选择器</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.select('p'))</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">print(bs.select('a'))</span><span style="color: #008000; "><br /></span></div><img src ="http://www.cnitblog.com/yide/aggbug/92717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2022-05-17 16:00 <a href="http://www.cnitblog.com/yide/archive/2022/05/17/92717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>