我是新来的弹性搜索,我想知道如何进行搜索指定一个或多个字段.
"SELECT field1,field2,field3 FROM tablename WHERE field1 = 'X' AND field2 != 'Y' AND field3 = 'Z'"
在弹性搜索我从这开始:
{ "query": { "filtered": { "query": { "query_string": { "query": "*" } },"filter": { "term" : { "field1" : "286" } } } } }
解决方法
您需要为该工作选择正确的查询,这在一开始就很难.您可以一直使用布尔查询来将各种不同的查询组合在一起,就像已经建议的一样.还有一些查询允许在多个字段上执行,并在内部映射到布尔查询.此外,term queries在生产系统中并不常见,因为它们不支持任何文本分析,而您通常希望以与您要查询的字段编制索引相似的方式分析查询.
弹性搜索中最常见的查询之一是匹配查询,其在单个字段上工作.还有另外一个查询,这个选项在多个字段(也称为multi_match)上也是一样.这些查询支持文本分析,工作得很好.我建议使用它们通过query_string查询实例,这是一个更强大,但容易出错,以及由于需要的解析过程.我想说,只有在您特别需要其功能之一(例如,在查询本身中指定字段名称或布尔运算符)时,才使用query_string,否则请查找匹配项.
了解查询和过滤器之间的区别也很重要,请查看here了解更多.
并查看the query DSL可用的所有查询,并与之进行交流,只是感受到您可以做的所有不同的事情.