elasticsearch - 使用 Elasticsearch 搜索部分单词或通配符
问题描述
当我如下搜索时,我成功获得了结果。这也适用于句子(或完整的单词)。但是,部分单词没有找到任何东西。
例如,让我们看一下这句话:
embedded image can place here.
当我搜索embedded
时,它会找到此内容。但embed
什么也没找到。
我来给你展示:
GET _search
{
"query": {
"bool": {
"must": [
{
"match": {
"content": "Embedded"
}
}
],
"filter": [
{
"term": {
"user_id": 10
}
}
]
}
}
}
结果:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 6,
"successful" : 6,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "inbox",
"_type" : "mailbox",
"_id" : "8c76f6a5-115a-4102-94e6-a3abef914d13",
"_score" : 0.2876821,
"_source" : {
"user_id" : 10,
"content" : "Embedded image"
}
}
]
}
}
但是,让我们只搜索单词embed
:
GET _search
{
"query": {
"bool": {
"must": [
{
"match": {
"content": "Embed"
}
}
],
"filter": [
{
"term": {
"user_id": 10
}
}
]
}
}
}
结果:空...
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 6,
"successful" : 6,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
像这样搜索时是否可以找到相关内容?请注意,它也应该在我搜索时找到embed image
GET _search
{
"query": {
"bool": {
"must": [
{
"match": {
"content": "embed image"
}
}
],
"filter": [
{
"term": {
"user_id": 10
}
}
]
}
}
}
解决方案
我通过使用解决了这个问题query_string
GET _search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "embed image",
"fields": [
"content"
]
}
}
],
"filter": [
{
"term": {
"user_id": 10
}
}
]
}
}
}
推荐阅读
- serialization - 如何在 Flink (Java) 中序列化 Tuple3?
- c - 是否有一种定义明确的、独立于平台的方法来获取在 C 中以二进制模式打开的文件的大小(以字节为单位)?
- redis - 为什么我会收到此 hgetall 类型错误?
- php - 如何在 REST api (yii2) 中编写方法 create 按条件添加对象
- c# - 从 Enumerable.WhereSelectEnumerableIterator 到 List
- cordova - Cordova ionic inappbrowser sdktargetversion 23 到 26 通过 Intent.getData() 暴露在应用程序之外
- linux - 无法从 Linux 服务器以无头模式运行 Robot Framework 测试 - WebDriverException
- javascript - 带有选定值但无法获取选定值的 Django 下拉 [onChange] 框
- ruby-on-rails - 单个服务器上的多个 Rails 应用程序(2 个单独的域) - puma 和 nginx
- php - Laravel 上的 Google Adsense 5+