北京网站seo费用,广告优化师没经验怎么面试,做网站哪些技术,导入数据wordpress文章目录 一#xff0c;110-全文检索-ElasticSearch-进阶-两种查询方式二#xff0c;111-全文检索-ElasticSearch-进阶-QueryDSL基本使用match_all三#xff0c;112-全文检索-ElasticSearch-进阶-match全文检索四#xff0c;113-全文检索-ElasticSearch-进阶-match_ph… 文章目录 一110-全文检索-ElasticSearch-进阶-两种查询方式二111-全文检索-ElasticSearch-进阶-QueryDSL基本使用match_all三112-全文检索-ElasticSearch-进阶-match全文检索四113-全文检索-ElasticSearch-进阶-match_phrase短语匹配五114-全文检索-ElasticSearch-进阶-multi_match多字段匹配 一110-全文检索-ElasticSearch-进阶-两种查询方式
Elasticsearch两种基本的检索方式使用Elasticsearch REST API的说明 使用REST request URI发送搜索参数 这种方式是通过GET请求将查询参数附加在URL上。这适用于简单的查询并且可以很容易地在浏览器中测试。例如上面的查询示例 GET bank/_search?q*sortaccount_number:ascGET 是HTTP方法用于请求从服务器获取资源。bank 是索引的名称。_search 是一个特殊的端点用于执行搜索查询。q* 是查询参数* 表示搜索所有文档。sortaccount_number:asc 指定了排序方式这里按照account_number字段升序排序。 使用REST request body发送搜索参数 这种方式是通过POST请求发送一个JSON格式的请求体。它提供了更复杂的查询能力并且可以包含多个查询参数和选项。例如上面的查询示例 POST bank/_search
{query: {match_all: {}},sort: [{account_number: {order: desc}}]
}POST 是HTTP方法通常用于向服务器提交要被处理的数据。bank/_search 同样指定了索引和搜索端点。请求体中的 query: { match_all: {} } 定义了一个查询match_all 查询将匹配所有文档。sort 数组定义了排序规则这里指定了按照account_number字段降序排序。
两种方式的主要区别在于查询的复杂性和灵活性。使用URI的方式简单直观适合快速测试和简单的查询。使用请求体的方式则更适合复杂的查询可以包含更多的选项和参数。
二111-全文检索-ElasticSearch-进阶-QueryDSL基本使用match_all
GET bank/_search
{query: {match_all: {}},sort: [{balance: {order: desc}}],from: 5,size: 5,_source: [balance, firstname]
}GET bank/_search这是HTTP请求的开始其中GET是请求方法bank是索引的名称_search是执行搜索查询的端点。 query: {定义查询的开始。 match_all:()这是一个查询子句match_all查询会匹配所有文档。括号()在这里应该是空的因为match_all查询不需要任何参数。 sort: [这个部分看起来像是一个语法错误因为sort关键字后面紧跟着一个单引号这可能是一个复制粘贴错误。正确的应该是sort: {用于定义排序规则。 balance:这是排序规则的一个字段表示按照balance字段进行排序。 orden: desc指定排序的顺序desc表示降序排序。 from: 5,定义从结果的哪个位置开始返回这里设置为5意味着从第6个结果开始返回。 size: 5,定义返回结果的数量这里设置为5意味着返回5个结果。 _source: [balance,firstname]定义返回的源字段这里指定返回balance和firstname字段的值。 这个查询会从bank索引中检索所有文档按照balance字段降序排序跳过前5个结果然后返回接下来的5个结果并且只返回每个结果的balance和firstname字段。
三112-全文检索-ElasticSearch-进阶-match全文检索
match query是一种模糊匹配查询时会将关键词进行分词处理然后基于倒排索引进行匹配对于匹配到的结果进行打分返回结果按照评分进行排序。
如下查询。 GET bank/_search
{query: {match: {address: mill}}
}这个查询同样是针对Elasticsearch的bank索引的一个搜索请求使用match查询来执行全文搜索。 GET bank/_search: 这表示使用HTTP GET方法发起请求目的是对bank索引进行搜索。 query: 这部分定义了搜索的查询条件。 match: 这是Elasticsearch中用于执行全文搜索的查询类型它会在指定的字段上进行搜索。 address: 这是要搜索的字段名称即文档中的address字段。 Mill road: 这是搜索的关键词查询会寻找address字段中包含Mill road这个确切短语的文档。
匹配查询有两种可能 完全匹配: 文档的address字段完全包含Mill road这个短语例如“123 Mill road”。 部分匹配: 搜索关键词Mill road会被分词为mill和road如果address字段包含Mill和road就会被匹配到如198 Mill Lane或263 Aviation Road。 查询结果显示一共有32个文档被匹配每个结果都有评分最高评分是8.926605返回结果默认按照评分降序排序。显然评分最高的是与搜索关键词匹配度最高的文档。
四113-全文检索-ElasticSearch-进阶-match_phrase短语匹配
match_phrase和match类似都是在指定的字段中进行全文搜索不同的是match_phrase要匹配整个短语中所有的词match匹配单个词就算命中match_phrase查询还关注词的顺序和位置它返回的是那些在指定字段中包含整个短语的文档。
以下是match_phrase查询的一些关键点 短语匹配: match_phrase会寻找包含整个短语的文档而不是单独的词。 词序: 它匹配的是短语中词的顺序即短语中的词必须按照指定的顺序出现。 位置敏感: 短语中的词之间可以有其他词但它们必须在短语中指定的顺序内。 使用场景: 当你需要搜索包含特定短语的文档时比如搜索包含完整地址或名称的文档match_phrase是一个很好的选择。 性能: 由于match_phrase查询需要考虑词的顺序和位置它可能比match查询在性能上要慢一些。 分析器: 与match查询一样match_phrase也受到字段使用的分析器的影响。不同的分析器可能会影响搜索结果。 语法: match_phrase查询的语法与match类似但是它更专注于短语的完整性和顺序。
这里是一个使用match_phrase查询的示例
GET bank/_search
{query: {match_phrase: {address: Mill Road}}
}在这个示例中查询会寻找address字段中包含Mill Road这个确切短语的文档并且词的顺序和大小写都需要匹配。如果address字段包含Mill Road但是顺序或大小写不同或者两个词中间有其他词那么这些文档将不会被匹配。
五114-全文检索-ElasticSearch-进阶-multi_match多字段匹配
multi_match查询允许在多个字段上执行相同的搜索查询只要一个字段匹配这条记录就会被命中。
下面是一个使用multi_match查询的示例
GET bank/_search
{query: {multi_match: {query: Albemarle,fields: [address, firstname]}}
}在这个示例中查询会在address、firstname字段上搜索包含Albemarle的文档。如果这些字段中的任何一个包含这个短语文档就可能被返回在搜索结果中。
如下firstname包含Albemarleaddress中不包含Albemarle但文档也会被命中。