Ayu*_*mar 2 wildcard match elasticsearch
我在使用通配符时遇到问题。每当我尝试使用通配符查找数据时,它都会返回错误
ES中的数据集如下所示:
"hits": {
"total": 1000,
"max_score": 1,
"hits": [
{
"_index": "accounts",
"_type": "data",
"_id": "25",
"_score": 1,
"_source": {
"account_number": 25,
"balance": 40540,
"firstname": "Virginia",
"lastname": "Ayala",
"age": 39,
"gender": "F",
"address": "171 Putnam Avenue",
"employer": "Filodyne",
"email": "virginiaayala@filodyne.com",
"city": "Nicholson",
"state": "PA"
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下查询:
GET /_search
{
"query":{
"filtered" : {
"filter" : {
"bool" : {
"should" :
{
"match":{
"wildcard":{"lastname" : "Aya*" }
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它抛出以下错误:
{
"error": {
"root_cause": [
{
"type": "query_parsing_exception",
"reason": "[match] query does not support [lastname]",
"index": "accounts",
"line": 9,
"col": 25
}
Run Code Online (Sandbox Code Playgroud)
我尝试在查询中仅使用通配符不使用匹配实例,但仍然无法获取数据。这里搜索成功但是没有返回数据。
没有匹配查询:
GET /_search
{
"query":{
"filtered" : {
"filter" : {
"bool" : {
"should" :
{
"wildcard":{"lastname" : "Aya*" }
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
请帮助我了解我应该如何设置查询。我也必须在 JAVA API 中使用这个查询字符串。因此,在这方面的任何建议也将非常有帮助。
这对我有用:
GET /_search
{
"query": {
"wildcard": {
"lastname": "aya*"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在这上面浪费了很多时间,直到我在网上阅读了这篇文章:
...if you search a not_analyzed field and use wildcards, you MUST NOT include any capital letters in your query...
Run Code Online (Sandbox Code Playgroud)
它一直没有工作,因为我正在寻找例如Aya*. 一旦我将它转换为小写,aya*它就起作用了。
| 归档时间: |
|
| 查看次数: |
3783 次 |
| 最近记录: |