elasticsearch - 带有分组查询字符串的 Elasticsearch
问题描述
{
"query":
{
"query_string" :
{
"query" : "((name:the_search_phrase) OR (keywords:the_search_phrase)) AND (city:Sydney, Australia)"
}
}
}
弹性搜索的新手。根据此处的文档构建 JSON:https ://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
但是,查询运行时Sydney, Australia
也会返回带有其他城市的结果。为什么 AND 部分不起作用?
我希望搜索词组与名称、关键字中的一个或两个匹配,但城市应该是严格意义上的悉尼。
解决方案
你正在做的是一个全文查询。city:Sydney, Australia
似乎是一个过滤查询。就像 SQL 中的 WHERE 子句。您最好为此使用过滤器查询。
查看布尔查询的示例,
大概是这样的,
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "the_search_term",
"fields": [
"name",
"keywords"
]
}
}
],
"filter": [
{
"match": {
"city": "Sydney, Australia"
}
}
]
}
}
}
推荐阅读
- php - 在 PHP 中使用 shell_exec 运行程序,如何知道进程是否完成?
- tensorflow - 使用 p5.js、TensorFlow 和 MobileNet 进行随机图像和分类
- tensorflow - CIFAR10 数据集没有属性 load_data()
- javascript - typeof(1) 将“Number”打印到控制台,但是当我询问 typeof(1) == Number 时,它打印出 false,为什么?
- sql - 让 Liquibase 执行 shp2pgsql PostGIS 命令
- ruby - 如何配置gitlab的预接收规则?
- excel - 优化用于计算 Excel VBA 的 For Each 循环
- java - MyBatis foreach 类型异常
- javascript - ReactRouter:部分替换我的页面而不是滚动到特定部分
- vb.net - VB:在文件夹中搜索文件并仅显示 Word 和 PDF 文件