欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES查询-基本查询

程序员文章站 2022-07-06 15:47:59
...

ES查询分为发散阶段和收集阶段两个阶段。查询发到一个节点,进行发散,查询过程分布在所有的节点上。每个查询的分片只返回标示符和得分。发送分散查询的节点等待所有节点查询完成后,收集结果进行适当排序并返回。

1.词条查询(term)

仅仅只匹配给定字段中含有该词条的文档。是精确的,未分析的词条。 下面的例子是查询title字段中含有crime一词的文档。

{
		"query"	:	{
		"term"	:	{
				"title"	:	"crime"
		}
		}
}

注意:经实验,只有title=crime时才可以查找成功。

2.多词条查询(term)

下面的例子是查询tags字段中含有novel或book的文档或两者皆有的文档。

{
		"query"	:	{
		"terms"	:	{
				"tags"	:	[	"novel",	"book"	]
		}
		}
}

3.匹配所有文件(match_all)

能够返回索引中的所有文档。

{
		"query"	:	{
		"match_all"	:	{}
		}
}

也可以在查询中包含加权值,加权值将赋值给所有匹配的文档。 下面的例子给所有文档加上了2.0的加权值。

{
		"query"	:	{
		"match_all"	:	{	
				"boost"	:	2.0	
		}
		}
}

4.类型查询(type)

在索引中匹配给定type的文档 下面例子是匹配是book类型的文档。

{
		"query"	:	{
		"type"	:	{
				"value"	:	"book"
		}
		}
}

5.存在查询(exists)

这种查询是匹配含有具体字段的文档。 下面的例子是查找具有tags字段的文档。

{
		"query"	:	{
		"exists"	:	{
				"field"	:	"tags"
		}
		}
}

6.不存在查询(missing)

匹配在给定字段是空值或没有值的文档。

{
		"query"	:	{
		"missing"	:	{
				"field"	:	"tags"
		}
		}
}

7.常用词查询

常用词查询是在没有停用词的情况下,为了提高查询相关性提供的一个方案。它的大体方案是:如对“crime and punishment‘中and是常用词,查询分为两组,第一词仅对常用词进行查询,然后对常用词进行查询,用来对第一次查询匹配的文档进行排序。

{
	"query"	:	{
		"common"	:	{	
			"title"	:	{
				"query"	:	"crime	and	punishment",
				"cutoff_frequency"	:	0.001
			}
		}
	}
}

8.match查询

9.query_sring查询

转载于:https://my.oschina.net/clgo/blog/666556