我是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"
}
}
}
}
}
您需要为工作选择正确的查询,这在一开始可能很难。您绝对可以使用布尔查询将各种不同的查询组合在一起,就像已经建议的那样。还有一些查询允许在多个字段上执行,并在内部映射到布尔查询。此外,术语查询在生产系统中并不常见,因为它们不支持任何文本分析,而您通常希望以与为查询字段建立索引的方式相似的方式来分析查询。
弹性搜索中最常见的查询之一是匹配查询,它适用于单个字段。还有另一个具有相同选项的查询也可以在多个字段上使用,称为multi_match。这些查询支持文本分析,并且效果很好。我建议例如在query_string查询上使用它们,由于需要进行解析,因此它功能强大得多,但也容易出错。我要说的是,仅当您特别需要query_string的功能之一(例如,在查询本身中指定字段名称或布尔运算符)时,才使用query_string,否则,请进行匹配查询。
了解查询和过滤器之间的区别也很重要,请看这里了解更多信息。
并查看一下查询DSL可用的所有查询,并进行处理,以了解您可以做的所有不同事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句