elasticsearch 前缀匹配

curl -XDELETE ‘http://localhost:9200/ess/‘;

curl -XPOST ‘http://localhost:9200/ess‘ -d ‘{

"analysis": {

"filter": {

"autocomplete_filter": {

"type":     "edge_ngram",

"min_gram": 1,

"max_gram": 20,

"token_chars": ["whitespace"]

}

},

"analyzer": {

"autocomplete": {

"type":      "custom",

"tokenizer": "whitespace",

"filter": [

"lowercase",

"autocomplete_filter"

]

},

"postsearch": {

"tokenizer": "keyword",

"filter": [

"lowercase"

]

}

}

}

}‘

curl -XPOST ‘http://localhost:9200/ess/ess/_mapping‘ -d‘

{

"ess": {

"properties": {

"id": {

"type" : "long"

},

"fullname": {

"type" : "string"

},

"allname": {

"type" : "string",

"analyzer":  "autocomplete",

"search_analyzer": "postsearch"

}

}

}

}‘

curl ‘localhost:9200/ess/_analyze?pretty=1&analyzer=autocomplete‘ -d ‘zs zhangsan zsan zhangs 张三 张s zns‘

curl ‘localhost:9200/ess/_analyze?pretty=1&analyzer=postsearch‘ -d ‘Z‘

curl -XPOST http://localhost:9200/ess/ess/1 -d‘

{"fullname":"张三" , "allname" : "zs zhangsan zsan zhangs 张三 张s zns" }

curl -XPOST http://localhost:9200/ess/ess/2 -d‘

{"fullname":"张三风" , "allname" : "zsf zhangsanfeng zsanfeng zhangsf 张三 三风 张sf znsf" }

curl -XPOST http://localhost:9200/ess/ess/3 -d‘

{"fullname":"李三风" , "allname" : "lsf lisanfeng lsanfeng lsf 李三 三风 李s lsf" }

curl -XGET ‘http://localhost:9200/ess/_search?pretty‘ -d ‘{

"query": {

"match": {

"allname": "张S"

}

}

}‘

时间: 2024-10-06 01:10:17

elasticsearch 前缀匹配的相关文章

[Elasticsearch] 部分匹配 (一) - 前缀查询

部分匹配(Partial Matching) 敏锐的读者可能已经发现到目前为止,介绍的查询都是在整个词条层面进行操作的.匹配的最小单元必须是一个词条.你只能找到存在于倒排索引(Inverted Index)中的词条. 但是如果你想匹配词条的一部分,而不是整个词条呢?部分匹配(Partial Matching)允许用户指定词条的一部分然后找到含有该部分的任何单词. 匹配词条一部分这一需求在全文搜索引擎领域比你想象的要不那么常见.如果你有SQL的背景,你可能有过使用下面的SQL语句来实现一个简单的全

[Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章. 查询期间的即时搜索(Query-time Search-as-you-type) 现在让我们来看看前缀匹配能够如何帮助全文搜索.用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type).这不仅让用户能够在更短的时间内看到搜索结果,也能够引导他们得到真实存在于我们的索引中的结果. 比如,如果用户输入了johnnie walker

前缀匹配

Problem B Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Submission(s) : 14   Accepted Submission(s) : 12 Problem Description An encoding of a set of symbols is said to be immediately decodable if no code for o

CIDR详解和ip最长地址前缀匹配

1.CIDR是什么 无类域间路由(CIDR)编址方案 摒弃传统的基于类的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率. 就是一个ip加一个网络掩码,不过这个掩码不是之前只有3个值(A类:8,B类:16,C类:24),而是0-32随意的一个值. 例如: 208.12.128.0/17 2.如何理解CIDR格式 上图 可以理解为一个从0到(2^32-1)长的线段. 掩码32表示n个ip的点,数量n是2^32. 掩码31表示n个小线段1,每个线段1包含2(2^(32-31))个i

[Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询

通配符和正则表达式查询 wildcard查询和prefix查询类似,也是一个基于词条的低级别查询.但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix).它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符. 以下查询能够匹配包含W1F 7HW和W2F 8HW的文档: GET /my_index/address/_search { "query": { "wildcard": { "postcode"

一个 VPC 与使用最长前缀匹配的两个 VPC 具有对等关系

您有带一个子网的中心 VPC (VPC A),在 VPC A 与 VPC B 之间具有 VPC 对等连接 (pcx-aaaabbbb),并且在 VPC A 与 VPC C 之间具有 VPC 对等连接 (pcx-aaaacccc).VPC B 和 VPC C 具有匹配 CIDR 块.您要使用 VPC 对等连接 pcx-aaaabbbb 在 VPC A 与 VPC B 中特定实例之间路由流量.以 10.0.0.0/16 IP 地址范围为目标的所有其他流量都通过 pcx-aaaacccc 在 VPC

[Elasticsearch] 部分匹配 (四) - 索引期间优化ngrams及索引期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章. 索引期间的优化(Index-time Optimizations) 目前我们讨论的所有方案都是在查询期间的.它们不需要任何特殊的映射或者索引模式(Indexing Patterns):它们只是简单地工作在已经存在于索引中的数据之上. 查询期间的灵活性是有代价的:搜索性能.有时,将这些代价放到查询之外的地方是有价值的.在一个实时的Web应用中,一个额外的100毫秒的延迟会难以承受. 通过在索引期间准备你的数据,可

[Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop參数

本文翻译自Elasticsearch官方指南的Proximity Matching一章. 邻近匹配(Proximity Matching) 使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每一个字段,视作"一大袋的单词"(Big bag of Words).match查询可以告诉我们这个袋子中是否包括了我们的搜索词条,可是这仅仅是一个方面.它不能告诉我们关于单词间关系的不论什么信息. 考虑下面这些句子的差别: Sue ate the alligator. The alligat

[Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数

本文翻译自Elasticsearch官方指南的Proximity Matching一章. 邻近匹配(Proximity Matching) 使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words).match查询能够告诉我们这个袋子中是否包含了我们的搜索词条,但是这只是一个方面.它不能告诉我们关于单词间关系的任何信息. 考虑以下这些句子的区别: Sue ate the alligator. The alligator a