- 文档存在哪里
- 文档表示的对象类别
- 文档唯一标识
- 文档里面的字段对应的数据类型
- GET /_search?from=30&size=10 或者 使用 POST 也是可以的
- 例子
GET /_search
{
"query":YOUR_QUERY_HERE
}
要使用这种查询表达式,只需将查询语句传递给query
参数:
{
QUERY_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
{
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
}
- 叶子语句
match
range
- 复合语句
bool
must
- 例子
{
"bool": {
"must": { "match": { "tweet": "elasticsearch" }},
"must_not": { "match": { "name": "mary" }},
"should": { "match": { "tweet": "full text" }},
"filter": { "range": { "age" : { "gt" : 30 }} }
}
}
- 查询(scoring query)是对文档进行匹配,算一个分
- 过滤(filtering query)简单的检查包含或者排除,计算速度快
- must 文档 必须 匹配这些条件才能被包含进来。
- must_not 文档 必须不 匹配这些条件才能被包含进来。
- should 如果这些语句中任何语句满足,则增加_score
- filter 必须匹配
PUT /my_index
{
"settings": { ... any settings ... },
"mappings": {
"type_one": { ... any mappings ... },
"type_two": { ... any mappings ... },
...
}
}
DELETE /my_index
DELETE /_all
待续
请尽可能多使用过滤式查询
- 用
term
查询,精确匹配,包含就行 - 使一些字段不使用
分析
- 范围搜索
range
bool过滤器
可以自己嵌套自己
{
"bool" : {
"must" : [],
"should" : [],
"must_not" : [],
}
}
{
"query": {
"range" : {
"publish_at" : {
"gte": "2017-11-01",
"format": "yyyy-MM-dd || yyyy-MM-dd HH:mm:ss"
}
}
}
}