导航:首页 > 净水问答 > elasticsearch过滤查询

elasticsearch过滤查询

发布时间:2021-02-09 00:43:55

❶ elasticsearch query 和 filter 的区别

如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档:版

{
"query": {
"bool": {
"must": [
{
"match": {
"gender": "F"
}
},
{
"match": {
"state": "PA"
}
}
],
"filter": [
{
"term": {
"age": "39"
}
},
{
"range": {
"balance": {
"gte": "10000"
}
}
}
]
}
}
}

返回结果:

查询虽然包含这权两种,但是查询在不同的执行环境下,操作还是不一样的。

Query与Filter

查询在Query查询上下文和Filter过滤器上下文中,执行的操作是不一样的:

Query查询上下文:

在查询上下文中,查询会回答这个问题——“这个文档匹不匹配这个查询,它的相关度高么?”

如何验证匹配很好理解,如何计算相关度呢?之前说过,ES中索引的数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索的分值计算还是很复杂的,因此也需要一定的时间。

❷ elasticsearch中输入带空格的关键字,实现模糊查询

"source.strain": {
"type": "muti_field",
"fields": {
"name": {
"type": "string",
"index": "analyzed"
},
"untouched": {
"type": "string",
"index": "not_analyzed"
}
}
}

利用"muti_field"类型可以对同一个字段实现模糊查询和精确查询。
source.strain.name字段可以用来进行模糊查询。
source.strain.untouched字段可以用来进行精确查询,由于没有对字段进行解析,所以还可以对字段进行分类统计的工作,即elasticsearch中的facet功能。

❸ elasticsearch查询实现类似if语句

在es1.x版本写法如下:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
在es2.x或以上版本版写法如下权:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}

❹ elasticsearch怎么模糊查询某个字段

"source.strain": { "type": "muti_field", "fields": { "name": { "type": "string", "index": "analyzed" }, "untouched": { "type": "string", "index": "not_analyzed" } } }利用"muti_field"类型可以对同一个字段实现模糊查询和精确查询。source.strain.name字段可以用来进行模糊查询。source.strain.untouched字段可以用来进行精确查询,由于没有对字段进行解析,所以还可以对字段进行分类统计的工作,即elasticsearch中的facet功能。

❺ ElasticSearch怎么做查询某个字段大于某个值的查询

使用来 _source 过滤。
http://localhost:9200/_search?_source=name
这样便过自滤除了 name 字段。
如果使用 Request Body 的话

GET /_search
{
"_source": "name",
"query" : {
//...
}
}

设置为false将会不返回任何 field

GET /_search
{
"_source": false,
"query" : {
"term" : { "user" : "kimchy" }
}

❻ 如何使用elasticsearch 批量查询数据库

scroll查询用于有效的从Elasticsearch中检索大量文档,而无需支付深度分页带来的开销。Scrolling允许我们初版始化权搜索将结果从Elasticsearch中按批次分离出来直到没有更完善啦!

❼ Elasticsearch 查询怎么返回指定的字段值

使用 _source 过滤。

http://localhost:9200/_search?_source=name

这样便过滤除了 name 字段。

如果使用 Request Body 的话

GET/_search
{
"_source":"name",
"query":{
//...
}
}

设置为false将会不返回任何 field

GET/_search
{
"_source":false,
"query":{
"term":{"user":"kimchy"}
}

_source 还可以支持一些匹配规则,下面的例子来自官方文档:

GET/_search
{
"_source":"obj.*",
"query":{
"term":{"user":"kimchy"}
}
}
GET/_search
{
"_source":["obj1.*","obj2.*"],
"query":{
"term":{"user":"kimchy"}
}
}
GET/_search
{
"_source":{
"includes":["obj1.*","obj2.*"],
"excludes":["*.description"]
},
"query":{
"term":{"user":"kimchy"}
}
}

文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html

❽ elasticsearch 怎么过滤分词一个字

分词一个字

❾ elasticsearch 查看每个分片下有多少条数据

Elasticsearch是一个高伸缩、高可用、基于Apache Lucene的开源搜索与分析引擎。通过它你可以很方便地对数据进行深入挖掘,可以随时放大与缩小搜索与分析的区间,并且这一切都是实时的。为了提供了一个优秀的用户体验,我们对Elasticsearch投入了很大的精力。Elasticsearch本身的各种选项已有了良好的默认值,使用户能够更方便地上手。但我们也为用户提供了全方面的选项,在必要的情况下,可以对该引擎的几乎每个方面进行定制。
举例来说,当你使用它搜索数据的时候,可以使用传统的查询(‘查找满足条件Y的所有项X’)进行过滤(在Elasticsearch术语中称为“视图”),高亮显示搜索片段,为每条结果提供相应的上下文。也可以使用地理位置(‘查找在Z里之内的所有项’),或是为用户提供搜索关键字建议,并且提供了强大的聚合(即Elasticsearch中的“分面”(facet))能力,例如时间分布图或者统计图。
Elasticsearch既可以搜索、也可以保存数据。它提供了一种半结构化、不依赖schema并且基于JSON的模型,你可以直接传入原始的JSON文档,Elasticsearch会自动地检测出你的数据类型,并对文档进行索引。你也可以对schema映射进行定制,以实现你的目的,例如对单独的字段或文档进行boost映射,或者是定制全文搜索的分析方式等等。
你既可以在自己的膝上电脑中启用一个小型实例,也可以在云端启用几十乃至几百个实例,只需要一些极小的改变而已。Elasticsearch会自动进行横向扩展,它能够随着你的应用一起成长。
Elasticsearch运行在JVM之上,它使用JSON格式,通过RESTful HTTP接口的方式访问,因此任何一种客户端或语言都能够与其交互。目前已经有了大量的客户端和框架的整合方案,包括对多种编程语言的支持,通过这些原生的API与专门的DSL将不一致的地方最小化,并实现性能最大化。
Elasticsearch非常适合于大数据的场合,它的高伸缩性与分布式架构的本质使得对大量信息的搜索与存储都可以在近乎实时的情况下完成。通过Elasticsearch-Hadoop这个项目,我们使Hadoop使用者(这里也包括Hive、Pig和Cascading)能够用一个成熟的搜索引擎来增强他们的工作流。我们还为他们提供了一种丰富的语言,能够让他们更好地表达意图,因而更准确地获得想要的结果,并且速度也大大提高了。

❿ ElasticSearch中Filter和Query的异同

如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档:
{
"query":
{
"bool":
{
"must":
[
{
"match":
{
"gender":
"F"
}
},
{
"match":
{
"state":
"PA"
}
}
],
"filter":
[
{
"term":
{
"age":
"39"
}
},
{
"range":
{
"balance":
{
"gte":
"10000"
}
}
}
]
}
}
}
返回结果:
查询虽然包含这两种,但是查询在不同的执行环境下,操作还是不一样的。
Query与Filter
查询在Query查询上下文和Filter过滤器上下文中,执行的操作是不一样的:
Query查询上下文:
在查询上下文中,查询会回答这个问题——“这个文档匹不匹配这个查询,它的相关度高么?”
如何验证匹配很好理解,如何计算相关度呢?之前说过,ES中索引的数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索的分值计算还是很复杂的,因此也需要一定的时间。
查询上下文
是在
使用query进行查询时的执行环境,比如使用search的时候。
Filter过滤器上下文:
在过滤器上下文中,查询会回答这个问题——“这个文档匹不匹配?”
答案很简单,是或者不是。它不会去计算任何分值,也不会关心返回的排序问题,因此效率会高一点。
过滤上下文
是在使用filter参数时候的执行环境,比如在bool查询中使用Must_not或者filter。
另外,经常使用过滤器,ES会自动的缓存过滤器的内容,这对于查询来说,会提高很多性能。
总结
1
查询上下文中,查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;在过滤器上下文中,查询操作仅判断是否满足查询条件
2
过滤器上下文中,查询的结果可以被缓存。

阅读全文

与elasticsearch过滤查询相关的资料

热点内容
怎么擦玻璃去水垢 浏览:392
蓝光车载净化器多少钱 浏览:74
蒸馏装置基本仪器 浏览:472
反渗透净水器和桶装水 浏览:500
可拆卸离子交换树脂滤芯 浏览:202
沁园直饮净水器怎么样 浏览:855
女生用自动回复逗你怎么回 浏览:79
河道清淤废水 浏览:248
不排放废水怎么处理 浏览:537
小型手提蒸馏提液机 浏览:320
无电净水器怎么安装泵 浏览:599
丁M一体化中水回用没备 浏览:477
饮水管怎么接净水机 浏览:100
废水超标排放的讲解 浏览:712
直饮水处理设备家用 浏览:179
大理石上用除垢后留下 浏览:427
污水加标回收率 浏览:628
过滤实验简易装置图 浏览:297
如何去除加湿器里面的水垢 浏览:417
饮水机浮球总是坏是怎么回事 浏览:455