如何匹配弹性搜索查询部分匹配多个查询?
How to match elastic search query partial match multiple query?
我的 DSL 查询如下
GET index_name/_search
{
"query" : {
"query_string" : {
"query" : "*avi*",
"fields" : [
"data.name"
]
}}}
我还需要添加 "query" : "*ojh*"
。
以下查询无效
GET index_name/_search
{
"query" : {
"query_string" : {
"query" : "*avi*",
"query" : "*ojh*",
"fields" : [
"data.name"
]
}}}
您需要利用 bool/should
查询并添加两个 query_string
查询:
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "*avi*",
"fields": [
"data.name"
]
}
},
{
"query_string": {
"query": "*ojh*",
"fields": [
"data.name"
]
}
}
]
}
}
}
不过请注意,像这样进行中缀搜索会降低集群的性能。请参阅 了解如何正确执行“子字符串”搜索。
我的 DSL 查询如下
GET index_name/_search
{
"query" : {
"query_string" : {
"query" : "*avi*",
"fields" : [
"data.name"
]
}}}
我还需要添加 "query" : "*ojh*"
。
以下查询无效
GET index_name/_search
{
"query" : {
"query_string" : {
"query" : "*avi*",
"query" : "*ojh*",
"fields" : [
"data.name"
]
}}}
您需要利用 bool/should
查询并添加两个 query_string
查询:
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "*avi*",
"fields": [
"data.name"
]
}
},
{
"query_string": {
"query": "*ojh*",
"fields": [
"data.name"
]
}
}
]
}
}
}
不过请注意,像这样进行中缀搜索会降低集群的性能。请参阅