构建请求
curl -i -XGET "Content-Type: application/json" -XPOST localhost:9200/_count?pretty -d '
{
'user_name':"xiaoming"
}
'
curl -i -XGET "Content-Type: application/json" 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}
'
添加索引
curl -XPUT localhost:9200/megacorp/employee/1?pretty -H "Content-Type: application/json" -d '
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'
curl -XPUT localhost:9200/megacorp/employee/2?pretty -H "Content-Type: application/json" -d '
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}'
curl -XPUT localhost:9200/megacorp/employee/3?pretty -H "Content-Type: application/json" -d '
{
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}'
简单搜索
curl -i -XGET "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/1?pretty'
curl -i -XGET "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty'
curl -i -XGET "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty&q=last_name:Smith'
DSL语句查询
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}'
更复杂的查询
找到姓氏为“Smith”的员工,但是我们只想得到年龄大于30岁的员工
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"bool" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 } <1>
}
},
"query" : {
"match" : {
"last_name" : "smith" <2>
}
}
}
}
}'
elaticsear no [query] registered for [filtered] 错误
使用bool / must / filter查询
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"bool" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 }
}
},
"must" : {
"match" : {
"last_name" : "smith"
}
}
}
}
}'
全文搜索
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}'
查询的结果集合
{
....
"max_score" : 1.146971,
"hits" : [
{
"_index" : "megacorp",
"_type" : "employee",
"_id" : "1",
"_score" : 1.146971,
"_source" : {
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests" : [
"sports",
"music"
]
}
},
{
"_index" : "megacorp",
"_type" : "employee",
"_id" : "2",
"_score" : 0.28368035,
"_source" : {
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests" : [
"music"
]
}
}
]
}
}
- 分析
查询的结果中, 可以查看 _score , 它是根据匹配程度得出的一个分数, 例如上面的match查询中, 第一个查询的结果出现了两个 rock climbing 关键字, 匹配程度更高, 而第二个则只匹配了一次, 所以工具source排序它更后
短语搜索 (单独搜索词)
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"match_phrase" : {
"about" : "I love"
}
}
}'
高亮搜索
curl -i -XGET -H "Content-Type: application/json" 'http://localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" : {
"match_phrase" : {
"about" : "I love"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}'
得出的结果集合
...
"highlight" : {
"about" : [
"<em>I</em> <em>love</em> to go rock climbing"
]
}
....
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 10, 2019 at 10:21 am