elasticsearch match查询中添加 like_text
时间: 2023-08-10 08:09:09 浏览: 119
很抱歉,我之前的回答有误。elasticsearch中并没有像SQL语句中的LIKE语法,但可以使用模糊查询(fuzzy query)或通配符查询(wildcard query)来实现类似的功能。
在使用match查询时,可以添加fuzziness参数来进行模糊匹配,例如:
```
{
"query": {
"match": {
"title": {
"query": "quick brown fax",
"fuzziness": "AUTO"
}
}
}
}
```
这会匹配title字段中包含"quick"、"brown"和"faxes"等单词的文档。
另外,也可以使用通配符查询,例如:
```
{
"query": {
"wildcard": {
"title": {
"value": "*brown*"
}
}
}
}
```
这会匹配title字段中包含"brown"的文档,通配符"*"可以匹配任意字符。但是,通配符查询的性能相对较低,不建议在大数据量的情况下使用。
相关问题
elasticsearch multi_match查询中添加 fuzzy_like_this
在Elasticsearch的multi_match查询中添加fuzzy_like_this需要使用fuzzy_like_this查询。可以将它作为multi_match查询的一个子句,如下所示:
```
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "your_query_string",
"fields": ["field1", "field2"],
"type": "most_fields",
"minimum_should_match": "30%"
}
},
{
"fuzzy_like_this": {
"fields": ["field1", "field2"],
"like_text": "your_like_text",
"max_query_terms": 12
}
}
]
}
}
}
```
在这个查询中,multi_match查询查找与"your_query_string"匹配的文档,而fuzzy_like_this查询查找与"your_like_text"相似的文档。您可以根据需要调整查询参数,例如更改max_query_terms或minimum_should_match。
es搜索数据不展示like_count 字段
在Elasticsearch中,如果你想要检索数据但是希望查询结果不包含`like_count`字段,你可以通过设置`_source`选项或者在查询体内排除该字段来实现。有两种常见的做法:
1. **使用 `_source` 设置**:
在查询请求的`body`部分,添加`"_source": {"exclude": ["like_count"]}`,这将只返回除了`like_count`之外的所有字段。
```json
GET your_index_name/_search
{
"size": 10,
"_source": { "exclude": [ "like_count" ] }
}
```
2. **在查询体内排除**:
使用`script_fields`或者`fields`选项,仅指定你想显示的特定字段,而不包括`like_count`。
```json
GET your_index_name/_search
{
"size": 10,
"query": {
"match_all": {}
},
"fields": ["*","your_other_fields"]
// 或者
"script_fields": {
"your_other_field": { "type": "text", "script": { "source": "doc['your_other_field'].value" } }
}
}
```
无论哪种方法,结果集中都不会包含`like_count`字段的信息。如果你想在后期处理阶段再计算类似计数,可以考虑使用聚合功能(aggregations)。
阅读全文