es查询如何指定n-gram
时间: 2024-09-07 16:01:42 浏览: 28
elasticsearch-analysis-ik-1.3.0.zip
在Elasticsearch中,n-gram是指连续的字符序列,常用于全文搜索中的词频统计和分析。如果你想在查询中指定n-gram,你可以使用`nGram`分析器或者`tokenize_by_word`选项配合`gram`参数。
例如,如果你想要生成所有长度为3的单词n-gram,可以在索引设置或字段映射时配置`ngram`分析器:
```json
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_ngram_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"ngram"
],
"type": "custom",
"args": {
"min_gram": "3",
"max_gram": "3"
}
}
}
}
},
"mappings": {
"properties": {
"text_field": {
"type": "text",
"analyzer": "my_ngram_analyzer"
}
}
}
}
```
在这个例子中,`min_gram`设为3,`max_gram`也设为3,表示只生成长度为3的n-gram。
在查询阶段,可以直接针对这个分析器创建查询,比如模糊匹配包含某个n-gram的文档:
```bash
GET /my_index/_search
{
"query": {
"match": {
"text_field": {"query": "短语 ngram", "operator": "and"}
}
}
}
```
这将搜索包含指定n-gram的文本。
阅读全文