在ElasticSearch中使用分析器进行部分搜索 [英] Partial Search using Analyzer in ElasticSearch
问题描述
我将一个URL提取为3个部分,即域,路径和查询 。
例如: testing.com/index.html?user=who&pw=no
将被分开进入
domain = testing.com
path = index.html
query = user = who& pw = no
当我想要在我的索引中部分搜索域时出现问题,例如user = who 或ing.com。
我在搜索时是否可以使用Analyzer,即使在索引时也没有使用Analyzer?
如何根据分析仪进行部分搜索?
非常感谢。
2方法:
1。通配符搜索 - 轻松缓慢
查询:{
query_string:{
查询:* ing.com,
default_field:domain
}
}
2。使用nGram分类器 - 更难,但更快
索引设置
settings:{
analysis:{
analyzer:{
my_ngram_analyzer:{
tokenizer:my_ngram_tokenizer
}
},
tokenizer:{
my_ngram_tokenizer:{
type:nGram,
min_gram:1 ,
max_gram:50
}
}
}
}
映射
属性:{
domain:{
type:string,
index_analyzer:my_ngram_analyzer
},
path:{
type:string,
index_analyzer:my_ngram_analyzer
},
query:{
type:string,
index_analyzer:my_ngram_analyzer
}
查询
查询:{
match:{
domain:ing.com
}
}
I am using elasticsearch to build the index of URLs.
I extracted one URL into 3 parts which is "domain", "path", and "query".
For example: testing.com/index.html?user=who&pw=no
will be separated into
domain = testing.com
path = index.html
query = user=who&pw=no
There is problems when I wanted to partial search domain in my index such as "user=who" or "ing.com".
Is it possible to use "Analyzer" when I search even I didn't use "Analyzer" when indexing?
How can I do partial search based on the analyzer ?
Thank you very much.
2 approaches:
1. Wildcard search - easy and slow
"query": {
"query_string": {
"query": "*ing.com",
"default_field": "domain"
}
}
2. Use an nGram tokenizer - harder but faster
Index Settings
"settings" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "1",
"max_gram" : "50"
}
}
}
}
Mapping
"properties": {
"domain": {
"type": "string",
"index_analyzer": "my_ngram_analyzer"
},
"path": {
"type": "string",
"index_analyzer": "my_ngram_analyzer"
},
"query": {
"type": "string",
"index_analyzer": "my_ngram_analyzer"
}
}
Querying
"query": {
"match": {
"domain": "ing.com"
}
}
这篇关于在ElasticSearch中使用分析器进行部分搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!