当前位置: 首页 > 面试题库 >

如何在Elasticsearch中增加索引类型?

禹昆
2023-03-14
问题内容

我曾经这样搜索: curl -XGET localhost:9200/users/_search

但用户包含这样的用户a,b,c: curl -XGET localhost:9200/users/a,b,c/_search

users是第一个索引,a/b/c是类型。

如何a在此查询中增加类型?最好加上示例代码,谢谢。


问题答案:

您可以使用术语查询来增强索引类型。

首先创建一些测试数据(e1,e2,e3是类型,而test是索引名称):

PUT test/e1/1
{
  "subject": "subject 1"
}
PUT test/e2/1
{
  "subject": "subject 1"
}
PUT test/e3/1
{
  "subject": "subject 1"
}

现在将术语查询与按类型自定义增强一起使用:

GET test/_search
{
  "query": {
    "bool": {
      "should": [
        {
         "query_string": {
           "query": "subject"
         }
        },
        { "term" : { "_type" : {"value" : "e3", "boost" : 2.0} } },
        { "term" : { "_type" : {"value" : "e2", "boost" : 3.0} } }
      ]
    }
  }
}

它将产生如下结果:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 3,
      "max_score": 0.7671045,
      "hits": [
         {
            "_index": "test",
            "_type": "e2",
            "_id": "1",
            "_score": 0.7671045,
            "_source": {
               "subject": "subject 1"
            }
         },
         {
            "_index": "test",
            "_type": "e3",
            "_id": "1",
            "_score": 0.59740055,
            "_source": {
               "subject": "subject 1"
            }
         },
         {
            "_index": "test",
            "_type": "e1",
            "_id": "1",
            "_score": 0.1289963,
            "_source": {
               "subject": "subject 1"
            }
         }
      ]
   }
}


 类似资料:
  • 问题内容: 我有三个食物类型索引:“意大利”,“西班牙”,“美国”。当用户搜索“奶酪”时,“意大利”文档似乎出现在顶部。如果我偏爱说“西班牙语”,是否可以“增强”结果?(我仍然应该获得意大利语的结果,但是基于索引类型“ Spanish”的一些数值提升值,结果中返回的文档的顺序将优先使用“ Spanish”索引。在用户输入的lucene和/或ES查询? 问题答案: 添加带有字词查询或字段(或两者都有

  • 问题内容: 我使用了官方的elasticsearch docker镜像,想知道在构建自定义索引时如何也可以包括在内,以便在启动容器时该索引已经存在。 我的尝试是将以下行添加到我的dockerfile中: 我收到以下错误: 我可以在构建过程中通过这样的API调用到达elasticsearch还是有完全不同的方法来实现这一点? 问题答案: 我有类似的问题。 我想创建一个预加载数据的docker容器(通

  • 问题内容: 我有两个必须分开的索引: 我将如何在搜索中“联接”这两个表,以使其返回以下内容: 问题答案: 正如您在其他问题中回答的那样,没有什么可以阻止您在建立索引时将名称存储在每个文档中,同时仍然具有包含数据的专用索引。请记住,这都是关于巧妙地对数据进行规范化,以便每个文档都可以根据需要实现“自包含”。 该解决方案的优点是每个订单商品都是完全独立的,您可以对其进行分组/汇总以获取给定订单的所有商

  • 问题内容: 我已经设置了索引。我不时向其推送新文档。 我只想在所有文档都编入索引后回答我的查询。我怎样才能做到这一点? 问题答案: 在ES 2中,您可以在为新文档建立索引后立即调用API,但是不建议在生产环境中使用它,因为这可能会降低群集的性能。 在ES5中,您将能够使用发送索引查询,并且ES仅在准备好搜索新文档时才响应。

  • 按照文档的规范示例,假设我想在elasticsearch中存储推文,但我想指定一个处理两个以上字段的endpoint,例如。 在本例中,我想在推特上建立索引,但也要在推特句柄和月份上建立索引,包括推特类型和id。 这是可能的,还是唯一可能的映射类似于他们提供的东西,一个和一个,例如?

  • 问题内容: 我的 单元/集成测试 包括搜索功能的测试。 我的想法是在每次测试之前有一个空的搜索索引。因此,我正在尝试删除方法(它是Groovy代码)的索引中的所有元素: 似乎它正在异步处理所有删除操作,因此在它之后添加了它。如您所见,我尝试几次打开/关闭连接-在那里没有帮助。 这个问题有时需要更多时间,有时需要5秒钟以上才能删除,有时无法找到刚刚添加的数据(来自先前的测试),等等。而最令人烦恼的是