json - 使用 Elasticsearch 搜索多个字段

我是 Elasticsearch 的新手,我想知道如何进行指定一个或多个字段的搜索。

使用 SQL 我会写这个查询:

"SELECT field1, field2, field3 FROM tablename WHERE field1 = 'X' AND field2 != 'Y' AND field3 = 'Z'"

在 Elasticsearch 中,我从这个开始:

{
    "query": {
        "filtered": {
            "query": {
                "query_string": {
                    "query": "*"
                }
            },
            "filter": {
                "term" : {
                    "field1" : "286"
                }
            }
        }
    }
}

最佳答案

sql查询相当于:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "field1": "X"
          }
        },
        {
          "term": {
            "field3": "Z"
          }
        }
      ],
      "must_not": {
        "term": {
          "field2": "Y"
        }
      }
    }
  }
}

无论如何,如果您是新手,我建议您在开始使用 elasticsearch 之前先阅读一下文档。

有很多类型的查询,其中一些取决于您如何索引数据,例如对于字符串,您可以在索引时分析字符串(小写、词干、删除停用词等)。如果您在索引时分析该字段并将其转换为小写,我发布的查询将永远不会匹配 field1 为“X”的文档。

一旦您对 elasticsearch 有所了解,您就可以使用过滤器来改进您的查询。

https://stackoverflow.com/questions/18695310/

相关文章:

json - 在 JSON 中序列化 base64 编码的数据

.net - JSON.NET JsonConvert 与 .NET JavaScriptSeria

java - JSON 对象中值的顺序是否重要?

java - 使用 jackson JsonNodeFactory 的最佳方式

javascript - Rails 中奇怪的 JSON Javascript 问题

java - 反序列化时忽略属性

javascript - 列表/数组是有效的 JSON 吗?

json - 如何在 jq 中将 JSON 对象转换为 key=value 格式?

python - Pandas 数据框到没有索引的json

php - 如何使用 PHP 更新/编辑 JSON 文件