我一直在阅读elasticsearch的这篇文档: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/analysis-word-delimiter-tokenfilter.html
同时在网上寻找例子。 不幸的是,不仅仅有一些例子,其中大多数都没有用。
如果有人可以发布或举例说明如何在elasticsearch中使用word_delimeter标记过滤器,我将非常感激。
感谢。
答案 0 :(得分:3)
Elasticversion - 5.2
尝试以下映射
PUT demo
{
"settings": {
"analysis": {
"analyzer": {
"index_analyzer_v1" : {
"tokenizer" : "whitespace",
"filter" : [ "word_delimeter"]
}
},
"filter": {
"ngram_filter" : {
"type" : "nGram",
"min_gram": 1,
"max_gram": 10,
"token_chars": [
"letter",
"digit"
]
},
"word_delimeter" : {
"type" : "word_delimiter",
"generate_number_parts" : true,
"catenate_words" : true,
"catenate_numbers": true,
"preserve_original" : true,
"stem_english_possessive": true
},
"stop_words" : {
"type": "stop",
"stopwords": ["and", "is", "the", "we", "in", "are", "was", "were", "of"]
}
}
}
},
"mappings": {
"product": {
"dynamic": "strict",
"properties": {
"name": {
"type": "text",
"analyzer": "index_analyzer_v1"
}
}
}
}
}
索引以下文件
POST demo/product
{
"name":"SH-09"
}
运行以下查询
POST demo/_search
{
"query": {"bool": {"must": [
{"term": {
"name": {
"value": "09"
}
}}
]}}
}
如果您想查看存储在倒排索引中的值,请运行以下查询
GET demo/_analyze?analyzer=index_analyzer_v1&text=SH-09
希望这有帮助
答案 1 :(得分:0)
我知道这个问题很老,但是无论如何... 我无法评论,因为我没有声望点,但是,如果您尝试搜索“所有人”,则上述答案中没有提供“-”,如果您要在“所有人”中搜索“身体”,也许可以使用简单的通配符来解决您。 https://www.elastic.co/guide/en/elasticsearch/reference/6.8/query-dsl-wildcard-query.html
我希望它有用