文章插图
(2)Term Query根据给定的查询条件在指定字段中进行精确匹配 。
例如,下面的查询可以匹配"my_field"字段中值为"my_value"的文档:
{ "query": { "term": { "my_field": "my_value" } } }
具体示例如下:curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '{ "query": { "term": { "name": "ctt" } }}'
查询结果如下:文章插图
(3)Range Query根据给定的范围查询条件在指定字段中进行匹配 。
例如,下面的查询可以匹配"my_field"字段中值在10到20之间的文档:
{ "query": { "range": { "my_field": { "gte": 10, "lte": 20 } } } }
具体示例如下:curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '{"query": {"range": {"age": {"gte": 10,"lte": 20}}}}'
查询结果如下:文章插图
(4)Bool Query根据给定的多个查询条件进行组合查询 。
例如,下面的查询可以匹配"my_field1"字段中值包含"my_value1"并且"my_field2"字段中值包含"my_value2"的文档:
{ "query": { "bool": { "must": [ { "match": { "my_field1": "my_value1" } },{ "match": { "my_field2": "my_value2" } }] } } }
具体示例如下:curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '{"query": {"bool": {"must": [{ "match": { "name": "ctt" } },{ "match": { "age": "18" } }]}}}'
查询结果如下:文章插图
(5)多条件查询在Elasticsearch中,可以使用布尔查询(Bool Query)来进行多个条件查询 。Bool查询包含三种类型的子查询:must、should和must_not 。
must查询:所有的查询条件都必须匹配才能返回文档 。可以使用多个must子句来构建复杂的查询 。should查询:至少有一个查询条件匹配时返回文档 。可以使用多个should子句来构建复杂的查询 。must_not查询:所有的查询条件都不能匹配才能返回文档 。
下面是一个示例,演示如何使用Bool查询来同时匹配多个条件:{ "query": { "bool": { "must": [ { "match": { "field1": "value1" } }, { "match": { "field2": "value2" } } ], "should": [ { "match": { "field3": "value3" } }, { "match": { "field4": "value4" } } ], "must_not": [ { "match": { "field5": "value5" } } ] } }}
在上面的示例中,查询条件包括:必须匹配field1为value1的文档;必须匹配field2为value2的文档;至少匹配一个should子句,其中field3为value3或field4为value4;不匹配field5为value5的文档 。
可以根据实际情况修改查询条件 。具体示例如下:curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '{ "query": { "bool": { "must": [ { "match": { "name": "ctt" } }, { "match": { "age": "18" } } ], "should": [ { "match": { "name": "tt" } }, { "match": { "age": "18" } } ], "must_not": [ { "match": { "name": "jgt" } } ] } }}'
查询结果:文章插图
(6)组合查询类似于如下SQL的组合条件查询
select * from users where (name like '%ctt%' or name like '%tt%') and age >=10 and age<=2
具体示例如下:curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '{ "query": { "bool": { "should": [ { "match": { "name": "ctt" } }, { "match": { "name": "tt" } } ], "filter": { "range": { "age": { "gte": 10, "lte": 20 } } } } }}'
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 5G将如何影响AR和VR?
- 云计算数据库的灾难恢复解决方案是如何演进的?
- 如何快速定位数据库消耗CPU语句?
- 如何正确的使用一条SQL删除重复数据
- 乔立夫老婆照片、围捕乔立夫,世界散打冠军,1995年,8名刑警如何擒拿乔立夫
- 100转换成二进制是多少?100的十进制数如何转换?
- 如何提高七种能力心得体会 如何提高调查研究能力
- 钱币|什么样的钱币叫罗汉钱,罗汉钱有什么样的特点,收藏空间如何
- 语音直播平台怎么赚钱的—网络主播如何赚钱的?
- 如何开母婴店 想开个母婴店初学者怎么入手