GET _cat/indices
GET hotel/_search
GET /_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"lvg_mc": "酒店"
}
},
"boost": 1.2
}
}
}
DELETE /my_index
PUT /my_index
{ "settings": { "number_of_shards": 1 }}
POST /my_index/_bulk
{ "index": { "_id": 1 }}
{ "title": "The quick brown fox" }
{ "index": { "_id": 2 }}
{ "title": "The quick brown fox jumps over the lazy dog" }
{ "index": { "_id": 3 }}
{ "title": "The quick brown fox jumps over the quick dog" }
{ "index": { "_id": 4 }}
{ "title": "Brown fox brown dog" }
GET /my_index/_search
{
"query": {
"match": {
"title": "QUICK!"
}
}
}
DELETE my_index查询所有数据
GET hotel/_search
{
"_source": ["xm","lvg_mc","sex_dic"],
"query": {
"match_all": {}
}
, "size": 100
}match query 指定分词方式,控制匹配精度
GET hotel/_search
{
"_source": ["xm","lvg_mc","sex_dic"],
"query": {
"match": {
"lvg_mc": {
"query": "如家 酒店 赣州",
"minimum_should_match": "75%",
"analyzer": "ik_smart"
}
}
}
}查询包含 如家 酒店 国际 赣州的数据
必须包含酒店和国际。
调整权重,如果包含赣州,分数更高一些,排名调整到前面
如果包含如家,则比赣州的得分更高一些 排名更靠前
GET hotel/_search
{
"_source": ["xm","lvg_mc","sex_dic"],
"query": {
"bool": {
"must": [
{
"match": {
"lvg_mc": {
"query": "酒店国际",
"analyzer": "ik_smart"
}
}
}
],
"should": [
{
"match": {
"lvg_mc": {
"query": "如家",
"analyzer": "ik_smart",
"boost": 3
}
}
},
{
"match": {
"lvg_mc": {
"query": "赣州",
"analyzer": "ik_smart",
"boost": 2
}
}
}
]
}
}
}
GET _analyze
{
"analyzer": "ik_smart",
"text": "酒店国际"
}可以使用 validate-query API 查看 会如何进行查询
+代表必须包含 ()代表可选包含 ^代表额外得分
GET hotel/_validate/query?explain
{
"query": {
"bool": {
"must": [
{
"match": {
"lvg_mc": {
"query": "酒店国际",
"analyzer": "ik_smart"
}
}
}
],
"should": [
{
"match": {
"lvg_mc": {
"query": "如家",
"analyzer": "ik_smart",
"boost": 3
}
}
},
{
"match": {
"lvg_mc": {
"query": "赣州",
"analyzer": "ik_smart",
"boost": 2
}
}
}
]
}
}
}#默认分析器
虽然我们可以在字段层级指定分析器,但是如果该层级没有指定任何的分析器,那么我们如何能确定这个字段使用的是哪个分析器呢?
分析器可以从三个层面进行定义:按字段(per-field)、按索引(per-index)或全局缺省(global default)。Elasticsearch 会按照以下顺序依次处理,直到它找到能够使用的分析器。索引时的顺序如下:
字段映射里定义的 analyzer ,否则
索引设置中名为 default 的分析器,默认为
standard 标准分析器
在搜索时,顺序有些许不同:
查询自己定义的 analyzer ,否则
字段映射里定义的 analyzer ,否则
索引设置中名为 default 的分析器,默认为
standard 标准分析器
有时,在索引时和搜索时使用不同的分析器是合理的。我们可能要想为同义词建索引(例如,所有 quick 出现的地方,同时也为 fast 、 rapid 和 speedy 创建索引)。但在搜索时,我们不需要搜索所有的同义词,取而代之的是寻找用户输入的单词是否是 quick 、 fast 、 rapid 或 speedy 。
为了区分,Elasticsearch 也支持一个可选的 search_analyzer 映射,它仅会应用于搜索时( analyzer 还用于索引时)。还有一个等价的 default_search 映射,用以指定索引层的默认配置。
如果考虑到这些额外参数,一个搜索时的 完整 顺序会是下面这样:
查询自己定义的 analyzer ,否则
字段映射里定义的 search_analyzer ,否则
字段映射里定义的 analyzer ,否则
索引设置中名为 default_search 的分析器,默认为
索引设置中名为 default 的分析器,默认为
standard 标准分析器
















