查询分为简单查询,复合查询,过滤查询
简单查询:
1.查询title字段中含有crime一词的文档
curl -XGET 'localhost:9200/the_index/the_type/_search?q=title:crime&pretty=true'
上面是使用网址传参进行查询,下面采用DSL来查询
curl -XGET ‘localhost:9200/the_index/the_type/_search?pretty=true' -d '{ "query" : { "query_string" : {"query" :"title:crime" } }}'
我们使用请求体(-d)把整个JSON格式的查询发到了Elasticsearch,使用pretty=true使返回更加美观。 这是我们得到的第一个查询结果。
分页和结果集大小:
from:指示返回的起始文档,默认为0,从第一个文档开始返回。 size:返回的最大文档数,默认为10。
例如:查询返回第10个起的后10个文档
{ "from":9, "size":10, "query" : { "query_string" : {"query" : "title:crime"} }}### ```返回版本值:ES可以在返回信息中返回文档的版本。只需要在查询的JSON的最上面加上**_"version":true,_**
{ "version":true, "query" : { "query_string" : {"query" : "title:crime"} } }
version属性返回在hit对象中。### 限制得分ES提供按照分数过滤返回的功能。例如:希望返回得分大于0.7的文档。
{ "min_score" :0.7, "query" :{ "query_string" :{"query" :title:crime"} } }
```
选择需要返回的字段 如只需要返回文档中部分内容不需要返回全部可以添加field字段。 例子:只返回title和year字段
{ “fields" : ["title", "year"], "query" :{ "query_string" :{"query" :title:crime"} }}
如果没有定义Field字段,则会返回—source 如果要返回所有字段,只需要传入*值。
Source Filtering 在json中加入"_source":false,可以在返回字段中不返回_source field. 使用"_source" : ["title","otitle"],可以返回_source中指定的title,otitle字段。 我们还可以使_source返回我们需要的字段,排除我们不需要的字段。如下: 返回所有以t开始的字段排除title。
{ "_source" : { "include" :["t*"], "exclude" :["title"] }, "query" :{ "query_string" :{"query" :title:crime"} }}
使用脚本字段,暂略。