java - Elasticsearch自定义插件: Add extra query parameter before search

标签 java elasticsearch elasticsearch-plugin

我是 Elasticsearch 新手,所以不知道如何正确开始执行以下任务。

我有一个索引,其中的文档包含两种类型的字段:

  • 地址:包含城市和街道的字符串;
  • houses:房屋编号列表(整数)。

通常情况下,我可以通过以下查询搜索此文档:

(1)

GET /_search
{
  "query":{
    "bool":{
      "should": [
        {"match": {"address": "Gotham Fourteenth street"}},
        {"match": {"houses": 33}}
      ]
    }
  }
}

我的目标是通过单个字符串匹配此类记录,例如:

(2)

GET /_search
{
  "query":{
    "bool":{
      "should": [
        {"match": {"address": "Gotham Fourteenth street 33"}}
      ]
    }
  }
}

甚至:

curl -X GET 'http://localhost:9200/_search?q=Gotham+Fourteenth+street+33'

即将查询(2)转换为(1),即从'address'中删除门牌号'33'并将其作为'houses'匹配参数执行搜索之前的相同查询。

我想我可以用 Java 创建一个插件,从“地址”中提取门牌号(解析不是问题),并添加一个带有该值的额外参数“houses”。

因此我的问题是:

  1. 在我的插件中,如何在执行搜索之前以编程方式向查询添加额外的匹配参数“houses”?
  2. 如何从“地址”参数中删除尾随的门牌号码标记?

最佳答案

curl -X GET 'http://localhost:9200/_search?q=address:"哥谭十四街"

curl -X GET 'http://localhost:9200/_search?q=address:"哥谭十四街"AND (houses=13)

还结帐wildcards

关于java - Elasticsearch自定义插件: Add extra query parameter before search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637940/

相关文章:

java - Spring 4 MVC 和 Websockets - 没有合适的默认 RequestUpgradeStrategy

java - 由 : java. lang.NullPointerException 引起:lock == null

java - 使用 Py4j 将 Python 对象发送到 Java

java - Elasticsearch 通过过滤器获取所有数据

elasticsearch - 使用 postman 创建索引时 Elasticsearch 出错

elasticsearch - Elasticsearch 插件可以有多个 Module 功能吗

Java Fork-Join 不适用于大型 ArrayList

elasticsearch - 如何阻止 logstash 在 ElasticSearch 中创建默认映射

php - elasticsearch php不返​​回没有空间的搜索结果

elasticsearch - 我们可以将SOLR中未存储的索引数据迁移到Elastic搜索吗?