elasticsearch - ElasticSearch Search-as-you-type field type field with partial search
问题描述
我最近更新了我的 ngram 实现设置以使用 Search-as-you-type 字段类型。 https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-as-you-type.html
这很好用,但我注意到部分搜索不起作用。如果我搜索数字 00060434,我会得到想要的结果,但我也希望能够搜索 60434,那么它应该返回文档 3。
有没有办法使用Search-as-you-type 字段类型来做到这一点,或者我只能用 ngrams 做到这一点?
PUT searchasyoutype_example
{
"settings": {
"analysis": {
"analyzer": {
"englishAnalyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"trim",
"ascii_folding"
]
}
},
"filter": {
"ascii_folding": {
"type": "asciifolding",
"preserve_original": true
}
}
}
},
"mappings": {
"properties": {
"number": {
"type": "search_as_you_type",
"analyzer": "englishAnalyzer"
},
"fullName": {
"type": "search_as_you_type",
"analyzer": "englishAnalyzer"
}
}
}
}
PUT searchasyoutype_example/_doc/1
{
"number" : "00069794",
"fullName": "Employee 1"
}
PUT searchasyoutype_example/_doc/2
{
"number" : "00059840",
"fullName": "Employee 2"
}
PUT searchasyoutype_example/_doc/3
{
"number" : "00060434",
"fullName": "Employee 3"
}
GET searchasyoutype_example/_search
{
"query": {
"multi_match": {
"query": "00060434",
"type": "bool_prefix",
"fields": [
"number",
"number._index_prefix",
"fullName",
"fullName._index_prefix"
]
}
}
}
解决方案
推荐阅读
- javascript - 如何获得包含字符串和数字的数组中的平均数
- php - 如何一起使用 laravel 分页 & makeHidden 和收集方法
- python - Py2Exe:将python文件转换为可执行文件后相机不起作用
- flutter - 从 Flutter 中的另一个类访问更改的 Slider 值
- windows - 任何人都可以修复该命令,我尝试了该命令,但 CMD 命令出错,
- django - 在白色 ip 上运行 Django 应用程序
- mysql - SQL 查询在不同表之间不一致
- mysql - 无法在 laravel 8 中存储数据
- javascript - 我想获取输入类型 Number 的最新值,然后将其传递给调度函数,但 setState 需要一些时间来更新?详情如下
- flutter - 当应用程序处于前台时,firebase 消息不显示通知