elasticsearch - 如何匹配弹性搜索查询部分匹配多个查询?
问题描述
我的 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"
]
}
}
]
}
}
}
不过请注意,像这样进行中缀搜索会降低集群的性能。有关如何正确执行“子字符串”搜索的信息,请参阅此线程。
推荐阅读
- css - Angular 材质:在 mat-chip 右侧显示图标
- tensorflow - 如何在不显式运行其输出的情况下使张量流分配操作成为计算图的一部分?
- php - PHP 警告:require() 无法打开流:没有这样的文件或目录
- python - 在 Linux Python/pip 上构建 cyrus-sasl 后看不到 sasl.h 文件
- android - 我的键盘不允许我创建一个新段落。
- python - csv python上关闭文件的I/O操作
- php - 可以使用 simplexml_load_string 来处理
标签吗? - php - 导入常量 PHP
- python-3.x - 如何在另一个类中使用 tkinter entry .get() 函数
- visual-studio - 使用 Nuget 和 SVN 在内部分发 Visual Studio 模板