我想知道是否可以在拼写错误的情况下搜索数据,就像我们在谷歌搜索一样。 目前,此查询会返回数千个结果:
{
"query": {
"query_string": {
"query": "obama"
}
}
}
但是当我把它改为:
{
"query": {
"query_string": {
"query": "omama"
}
}
}
“奥巴马”取代“奥马玛”没有结果。如果拼写错误,是否可以获得结果?
答案 0 :(得分:1)
我认为你要找的是Fuzzy Query。
{
"query": {
"fuzzy": {
"field_name" : "omama"
}
}
}
如果您在单个字段上运行此操作,则可以使用fuzzy query like this field
{
"fuzzy_like_this_field" : {
"name.first" : {
"like_text" : "omama",
"max_query_terms" : 12
}
}
}
您还可以查看Phonetic Matching
https://github.com/elasticsearch/elasticsearch-analysis-phonetic
答案 1 :(得分:1)
只需使用fuzzy
查询,(documentation):
{
"query": {
"fuzzy": {
"name": "omama"
}
}
}
你应该得到你的结果:
{
"took": 12,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 2.7917595,
"hits": [
{
"_index": "test",
"_type": "obama",
"_id": "D_ovfcHkQwODdftWM4_z1Q",
"_score": 2.7917595,
"_source": {
"name": "obama"
}
}
]
}
}